2010-10-11 4 views
0

Rechercher un tableau - J'ai trouvé cette fonction ci-dessous pour rechercher un tableau qui est "génial" pour les chaînes uniques, il va correspondre à une valeur tableau et ou tableau et clé correspondante dans un tableau, MAIS ce que je Vraiment vouloir faire est seulement correspondre à un tableau où toutes les valeurs de recherche sont rencontrées/retournées. l'exemple de requête pourrait renvoyer des correspondances pour tous les enregistrements où il existe une correspondance pour - search1 ou serach2 NOT où les deux termes "search" - search1 et serach2 - sont remplis.Rechercher et faire correspondre à partir du tableau

exemple des tableaux

array 1 - key1=>search1,key2=>search2,key3=>search3,key4=>search4 
array 2 - key1=>search2,key2=>search1,key3=>search4,key4=>search2 
array 3 - key1=>search3,key2=>search2,key3=>search4,key4=>search1 
array 4 - key1=>search1,key2=>search3,key3=>search2,key4=>search4 

donc si vous avez exécuté la fonction de ces tableaux (ci-dessus), il devrait seulement correspondre array1 comme seul matrice1 est à la fois la recherche et apparié clé. Bien que array4 ne corresponde pas à la recherche de key1, il ne devrait pas être retourné car il ne correspond pas à la recherche de key2, comme wise array3 car cela ne correspond qu'à key2.

Suggestions & aidez s'il vous plaît.

function recursiveArraySearch($haystack, $needle, $index = null) { 
    $aIt = new RecursiveArrayIterator($haystack); 
    $it = new RecursiveIteratorIterator($aIt); 
    while($it->valid()) {  
     if(((isset($index) AND ($it->key() == $index)) OR (!isset($index))) AND ($it->current() == $needle)) { 
     return $aIt->key(); 
     } 

     $it->next(); 
    } 

    return false; 
} 



$sql = mysql_query("SELECT * FROM atable WHERE tableID = '1' "); 
while($row = mysql_fetch_array($sql)): 
    $content = json_decode($row['tosearch']); 
    echo recursiveArraySearch(json_decode($row['tosearch']), 'search1','key1');  
    echo recursiveArraySearch(json_decode($row['tosearch']), 'search2','key2'); 
endwhile; 

Le format « idéal » pour la fonction serait quelque chose comme ceci:

echo recursiveArraySearch(json_decode($row['tosearch']), 
array('search1'=>'key1'),array(('search2'=>'key2')); 

Répondre

Questions connexes