Php 如果在多维数组中找到值,则执行if语句
我有一段代码,其唯一目的是在多维数组中找到所需的值,如果找到匹配项,则执行if语句 我使用了Php 如果在多维数组中找到值,则执行if语句,php,search,multidimensional-array,Php,Search,Multidimensional Array,我有一段代码,其唯一目的是在多维数组中找到所需的值,如果找到匹配项,则执行if语句 我使用了array\u search()方法返回匹配的索引。因此,这意味着如果在第一个索引中找到匹配,它将返回索引0。根据定义,这是错误的 因此,当在第一个索引中找到匹配项时,我的if语句不会被执行。如何解决这个问题 $arr = array( 0 =>array( 'name' => 'mr.x', 'id' => 1 ), 1 =>arr
array\u 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 !';
}
如果没有找到匹配项,它将返回false。您需要严格的平等性检查:
if ($match !== false) {
echo 'a match found !';
}
你是对的——因为0
是falsy,如果值是数组中的第一个值,你就永远不会进入if块。因此,您必须检查返回值是否为false,而不仅仅是falsy
您可以在中看到这方面的示例。如果未找到匹配项,它将返回false。您需要严格的平等性检查:
if ($match !== false) {
echo 'a match found !';
}
你是对的——因为0
是falsy,如果值是数组中的第一个值,你就永远不会进入if块。因此,您必须检查返回值是否为false,而不仅仅是falsy
您可以在中看到这方面的示例。您可以使用
==代码>或===
if(($key = array_search( ... )) !== false){
//do something
}
您可以使用==代码>或===
if(($key = array_search( ... )) !== false){
//do something
}
您可能希望使用此递归搜索来获取值并执行代码
$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;
}
您可能希望使用此递归搜索来获取值并执行代码
$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;
}
如果$match=0,它会执行吗?是的!仅当$match
实际为false时,它才会执行如果$match=0,它会执行吗?是的!仅当$match
实际为false