我有一段代码,其唯一目的是在多维数组中找到所需的值,如果找到匹配则执行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 !';
}
答案 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;
}