filtrare array cu valori din alt array 2-dimensional

Discutii despre script-uri si coduri PHP-MySQL, precum si lucru cu XML in PHP.
sterica
Mesaje:285

filtrare array cu valori din alt array 2-dimensional

Salutare,

Am urmatoarele doua array-uri:
primul array este rezultat din query:
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);

Cod: Selectaţi tot

Array
(
    [0] => Array
        (
            [IdPersonal] => 18
        )

    [1] => Array
        (
            [IdPersonal] => 54
        )

    [2] => Array
        (
            [IdPersonal] => 66
        )

    [3] => Array
        (
            [IdPersonal] => 67
        )
)
si al doilea array:

Cod: Selectaţi tot

Array
(
    [107] => Array
        (
            [nume] => Popescu
            [prenume] => Marius
            [email] => xxx@xxx.ro
        )

    [54] => Array
        (
            [nume] => Popoivi
            [prenume] => Ion
            [email] => xxx@xxx.ro
        )

    [10] => Array
        (
            [nume] => Ionascu
            [prenume] => Victor
            [email] => xxx@xxx.ro
        )

    [18] => Array
        (
            [nume] => Mihai
            [prenume] => Ioana
            [email] => xxx@xxx.ro
        )
)
Valorile din primul array 18, 54, 66, 67 reprezinta cheile celui de-al doilea array.
Cum pot filtra cel de-al doilea array ramanand doar cheile care se regasesc in primul. In cazul de fata sa ramana doar cele doua chei 54 si 18.

Multumesc!

MarPlo Mesaje:4343
Salut,
Poti sa folosesti functia filter2DArr() din urmatorul exemplu:

Cod: Selectaţi tot

//returns $a2 with keys wich ar values of $k1 key in $a1
function filter2DArr($a1, array $a2, string $ki){
  $ar1 =[];
  foreach($a1 as $k=>$v) $ar1[] = $v[$ki];
  foreach($a2 as $k=>$v){
    if(!in_array($k, $ar1)) unset($a2[$k]);
  }
  return $a2;
}

//Test
$ar1 =[
  ['IdPersonal'=>24], ['IdPersonal'=>8], ['IdPersonal'=>18], ['IdPersonal'=>45]
];
$ar2 =[
  107=>['bcd'],
  24=>['val'],
  78=>['xyz'],
  18=>[890]
];

$ar2 = filter2DArr($ar1, $ar2, 'IdPersonal');

//for debug
echo '<pre>'; var_export($ar2); echo '</pre>';
// [24=>['val'],18=>[890]]

sterica Mesaje:285
Lucrez pe un server ce are instalat php 5.3 si nu recunoaste string $ki din functie.
Am eliminat string si a ramas doar $ki.

Multumesc mult de ajutor!

Subiecte similare