Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/294.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 为什么在找不到匹配项时返回空值但为布尔类型_Php_Arrays_Search_Multidimensional Array - Fatal编程技术网

Php 为什么在找不到匹配项时返回空值但为布尔类型

Php 为什么在找不到匹配项时返回空值但为布尔类型,php,arrays,search,multidimensional-array,Php,Arrays,Search,Multidimensional Array,我正在使用以下代码搜索多维数组中的元素。当找到匹配项时,它将返回索引。但当找不到匹配项时,它将返回空值。不是0或1。但如果我打印出类型,它将显示布尔值。如果返回空值,布尔值意味着什么。这是否意味着它将等于空字符串 $arr =Array ( 0 => Array ( 'uid' => '100', 'name' => 'Sandra Shush' ), 1 => Array

我正在使用以下代码搜索多维数组中的元素。当找到匹配项时,它将返回索引。但当找不到匹配项时,它将返回空值。不是0或1。但如果我打印出类型,它将显示布尔值。如果返回空值,布尔值意味着什么。这是否意味着它将等于空字符串

$arr =Array
(
    0 => Array
        (
            'uid' => '100',
            'name' => 'Sandra Shush'
        ),

    1 => Array
        (
            'uid' => '5465',
            'name' => 'Stefanie Mcmohn'      
        ),

    2 => Array
        (
            'uid' => '40489',
            'name' => 'Michael'   
        )
);

$match = array_search('546',array_column($arr, 'uid'));

echo gettype($match);

如果您查看array_搜索方法描述,它会说:如果在数组中找到针,则返回针的键,否则返回FALSE。这是你的答案

此函数可能返回布尔值FALSE,但也可能返回计算结果为FALSE的非布尔值。有关更多信息,请阅读布尔值部分。使用===运算符测试此函数的返回值

转换为布尔值时,以下值被视为FALSE:

the boolean FALSE itself
the integer 0 (zero)
the float 0.0 (zero)
the empty string, and the string "0"
an array with zero elements
the special type NULL (including unset variables)
SimpleXML objects created from empty tags

所有其他值都被认为是真的,包括任何资源和NAN

array\u search函数返回在数组中找到的针的键,否则返回FALSE。因此,当您对返回值使用gettype时,它将返回FALSE类型,即布尔值表示搜索不成功,否则返回INT索引值。

您的代码正在工作,当array_search未找到时,则返回FALSE,如果gettype$匹配;然后显示布尔值,如果找到,则返回索引,因此在本例中返回整数

这是返回的代码

<?php
$arr =Array
(
    0 => Array
        (
            'uid' => '100',
            'name' => 'Sandra Shush'
        ),

    1 => Array
        (
            'uid' => '5465',
            'name' => 'Stefanie Mcmohn'      
        ),

    2 => Array
        (
            'uid' => '40489',
            'name' => 'Michael'   
        )
);

$match = array_search('5465',array_column($arr, 'uid'));

echo gettype($match);
更多信息

在大海捞针时返回FALSE

比较使用==。这意味着,如果需要,这些值将转换为相同的类型。但它们的值在转换后必须相同。它与子字符串不匹配


echoFALSE;没有打印任何东西。事实上,假的类型是。FALSE与空字符串zero 0一起使用,该字符串包含数字zero“0”。

如果在数组中找到针,则返回针的键,否则返回FALSE。所以当返回FALSE时,它是布尔型的,因为您不知道FALSE是如何显示的。FALSE不等于0,但通常被视为0。你可以用一种含蓄的方式把它转换成事物。将FALSE转换为字符串实际上会传递空字符串。但这并不意味着搜索函数返回空字符串。它返回FALSE。它只是说如果它为FALSE,则表示未找到,您使用了gettypeFALSE,因此boolean EchoDarray_搜索在数组中搜索给定的值,如果成功,则返回第一个对应的键。
<?php
$array = array(0 => 'blue', 1 => 'red', 2 => 'green', 3 => 'red');

$key = array_search('green', $array); // $key = 2;
$key = array_search('red', $array);   // $key = 1;
?>