Pagina 1 din 1

filtrare array cu valori din alt array 2-dimensional

Scris: Lun Mar 26, 2018
de sterica
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!

filtrare array cu valori din alt array 2-dimensional

Scris: Lun Mar 26, 2018
de 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]]

filtrare array cu valori din alt array 2-dimensional

Scris: Mar Mar 27, 2018
de 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!