Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 从数组中搜索和匹配_Php_Arrays_Multidimensional Array - Fatal编程技术网

Php 从数组中搜索和匹配

Php 从数组中搜索和匹配,php,arrays,multidimensional-array,Php,Arrays,Multidimensional Array,搜索一个数组-我在下面找到了这个函数来搜索一个对单个字符串来说“很棒”的数组,它将匹配数组值和/或数组值以及数组中的匹配键,但我真正想做的是只匹配一个满足/返回所有搜索值的数组。查询示例可以返回与-search1或serach2匹配的任何记录的匹配项,而不是同时满足“搜索”术语-search1和serach2的任何记录 示例数组 array 1 - key1=>search1,key2=>search2,key3=>search3,key4=>search4 array

搜索一个数组-我在下面找到了这个函数来搜索一个对单个字符串来说“很棒”的数组,它将匹配数组值和/或数组值以及数组中的匹配键,但我真正想做的是只匹配一个满足/返回所有搜索值的数组。查询示例可以返回与-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
因此,如果您为这些数组(如上)运行函数,它应该只匹配array1,因为只有array1同时匹配了搜索和键。尽管array4与对key1的搜索匹配,但不应返回,因为它与对key2的搜索不匹配,就像wise 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'));  

我不完全理解,但我认为它可能有用: