【问题标题】:PHP Search Multidimensional Array - Not AssociativePHP 搜索多维数组 - 非关联
【发布时间】:2012-04-17 03:46:43
【问题描述】:

我正在尝试编写一段代码来搜索一列二维数组值并在找到它时返回键。现在我有两个函数,一个是查找一个值并返回一个布尔值 true 或 false,另一个(不工作)返回密钥。我想在保留查找函数的递归性质但返回一个键的意义上合并两者。我想不出如何在一个功能中同时完成这两个功能,但非常感谢工作的关键查找器。

谢谢

function in_array_r($needle, $haystack, $strict = true) {
foreach ($haystack as $item) {
    if (($strict ? $item === $needle : $item == $needle) || (is_array($item) && in_array_r($needle, $item, $strict))) {
        return true;
    }
}

return false;

}

function loopAndFind($array, $index, $search){
     $returnArray = array();
     foreach($array as $k=>$v){
           if($v[$index] == $search){   
                $returnArray[] = $k;
           }
     }
     return $returnArray;

}`

抱歉,我想添加一个示例。例如:

Array [0]{
[0]=hello
[1]=6
}
[1]
{
[0]=world
[1]=4
}

我想通过 [x][0] 索引搜索数组,以检查搜索词的每个单词字符串。如果找到,它应该返回主数组中的索引/键,如“world”返回 1

【问题讨论】:

  • 您能否发布一个示例数组,突出显示您希望在其中匹配的内容? “一列二维数组值并返回键”不是很清楚。
  • 为什么要在第二个函数中使用索引?
  • 我在上面发布了一个示例,但我不确定为什么要使用 index.html。我认为它应该是第二个数组的索引,例如 Array[0]{[index]=stuff, [1]=words} 等

标签: php multidimensional-array


【解决方案1】:

这行得通:

$array = array(array('hello', 6), array('world', 4));
$searchTerm = 'world';

foreach ($array as $childKey => $childArray) {
    if ($childArray['0'] == $searchTerm) {
        echo $childKey; //Your Result
    }
}

【讨论】:

    【解决方案2】:

    您已经拥有了第一个函数所需的一切。 PHP 完成其余的工作:

    $findings = array_map('in_array_r', $haystack);
    $findings = array_filter($findings); # remove all not found
    var_dump(array_keys($findings)); # the keys you look for
    

    【讨论】:

    • 很抱歉,我不确定我知道您要做什么。我需要一次在数组中搜索一个术语,而不是一次运行所有函数。这有意义还是我误解了你的代码?谢谢
    • 从您的问题中并不清楚您要搜索什么以及如何搜索。你已经删除了一些函数,没有显示任何代码,你想如何调用它们,输入是什么,输出应该是什么。如果你加上这个,我很确定我可以同样清楚地回答。
    猜你喜欢
    • 2014-08-12
    • 2020-04-16
    • 1970-01-01
    • 2016-03-28
    • 1970-01-01
    • 2014-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多