Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/237.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如果在多维数组中找到值,则执行if语句_Php_Search_Multidimensional Array - Fatal编程技术网

Php 如果在多维数组中找到值,则执行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

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

我使用了
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