【问题标题】:Search and match from array从数组中搜索和匹配
【发布时间】:2010-10-11 14:52:56
【问题描述】:

搜索一个数组 - 我在下面找到了这个函数来搜索一个对单个字符串来说“很棒”的数组,它会匹配一个数组值和/或数组值以及数组中的匹配键,但我真正想做的是仅匹配满足/返回所有搜索值的数组。查询示例可以返回匹配任何记录的匹配项 - 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 的搜索不匹配,就像 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'));  

【问题讨论】:

    标签: php arrays multidimensional-array


    【解决方案1】:

    我什么都不懂,但我认为它可能有用:http://php.net/manual/en/language.operators.array.php

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-16
      • 1970-01-01
      • 2012-10-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多