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: 250

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
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
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