Cautare valori egale in 2 array-uri multidimensionale

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

Cautare valori egale in 2 array-uri multidimensionale

Salut,
Am 2 array-uri rezultate din 2 interogari pe 2 tabele in BD. Vreau sa caut daca un cimp (adica o cheie) din primul array exista in al doilea array, iar daca valoarea acelei chei este egala cu o anumita variabila, sa pun in primul array valoarea 1 intr-un alt cimp (cheie) Am incercat:

Cod: Selectaţi tot

<?php
foreach($result as $row){  //$result este primul array
  $cheie = $row['id'];  // id-ul user
// acum vreau sa caut cimpul (cheia) 'elevid' din $result2 (al doilea array) si daca are valoarea $cheie ma intorc la primul array si pun valoare 1 in alt cimp
  if(array_key_exists('elevid', $result2) && $result2['elevid']== $cheie){
    echo 'gasit cheia';
    $row['cecelev']=1;
  }  
}
?>
Nu-mi iese deloc, nu stiu unde gresesc. Care ar fi instructiunea corecta? Multumesc.

MarPlo Mesaje: 4343
Salut
Daca si $result2 e un array cu doua dimensiuni, cred ca trebuie foreach() aplicat si la $result2, sa ai 2 foreach() imbricate.
Iar valoarea 1, ca sa fie adaugata la $result, se aplica la acesta (nu la $row, care e variabila tranzitorie)
Incearca asa:

Cod: Selectaţi tot

foreach($result as $k =>$row){  //$result e primul array multidimensional
  //caut cimpul (cheia) 'elevid' din $result2 (array multidimensional) si compar cu valoarea id din $result
  //daca valorile sunt egale, aplica 1 la campul 'cecelev' din $result din randul curent parcurs
  foreach($result2 as $row2){
    if(isset($row2['elevid']) && $row['id'] == $row2['elevid']){
      $result[$k]['cecelev'] =1;
      echo 'Gasit: '. $row['id'];
    }
  }
} 
- Daca nu reusesti sa rezolvi, posteaza aici cele doua array-uri sa vedem structura lor. Poti sa aplici acest cod ca sa copii array-urile:

Cod: Selectaţi tot

var_export($result);
echo '<br>';
var_export($result2); 

andras Mesaje: 430
Functioneaza corect cu foreach imbricat. Scopul acestor instructiuni este (simplificat) ca in tabelul html corespunzator primului array am un checkbox, care la afisare sa fie deja bifat daca id-ul exista in al doilea tabel. De fapt verific 2 cimpuri, dar ideea e aceeasi. Multumesc!

Subiecte similare