2010-10-11 100 views
0

搜索一个数组 - 我发现下面这个函数用于搜索一个对于单个字符串“很好”的数组,它将匹配数组值和/或数组值,并匹配数组中的键,但是我真正想要做的只是匹配满足/返回所有搜索值的数组。该查询示例可以返回任何匹配的记录 - search1或serach2不匹配,其中搜索条件search1和serach2都满足。从数组中搜索和匹配

例如阵列

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 

所以如果你跑了功能这些阵列(上图)它应该只匹配阵列1,因为只有阵列1已经搜索和关键字相匹配。尽管array4与key1的搜索匹配,但它不应该被返回,因为它不匹配key2的搜索,就像明智的array3一样,因为它只能在key2上匹配。

建议&请帮忙。

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; 

该函数的“理想”的格式将是这样的:

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

回答