如果在多维数组中找到值,则执行if语句

时间:2017-06-06 18:44:40

标签: php search multidimensional-array

我有一段代码,其唯一目的是在多维数组中找到所需的值,如果找到匹配则执行if语句。

我使用了array_search()方法返回匹配的索引。这意味着如果在第一个索引中找到匹配,则返回该索引为0.根据定义,这是假的。

所以当在第一个索引中找到匹配时,我的if语句没有被执行。如何解决这个问题?

$arr = array(

   0 =>array(
       'name' => 'mr.x',
       'id' => 1
   ),
   1 =>array(
       'name'=>'mr.y',
       'id'  =>2
   )

);

$match = array_search(2,array_column($arr,'id'));

echo $match;

if($match){

    echo 'a match found !';
}

3 个答案:

答案 0 :(得分:2)

如果未找到匹配项,则返回false。你想要一个严格的平等检查:

if ($match !== false) {
    echo 'a match found !';
}

你是对的 - 因为0是假的,如果值是数组中的第一个,你将永远不会进入if块。所以你必须检查返回值是否特别错误,而不仅仅是假的。

您可以在PHP documentation regarding array_search中找到相关示例。

答案 1 :(得分:0)

您可以使用!=====

if(($key = array_search( ... )) !== false){
   //do something
}

答案 2 :(得分:0)

可能您希望使用此递归搜索来获取值并执行代码。

$found = recursive_array_search($search_item, $your_array);
if ( $found ){
    echo 'a match found !';
}

function recursive_array_search($needle,$haystack) {
    foreach($haystack as $key=>$value) {
        $current_key=$key;
        if($needle===$value OR (is_array($value) && recursive_array_search($needle,$value) !== false)) {
            return $current_key;
        }
    }
    return false;
}