为什么它在没有找到匹配时返回空值但是返回布尔类型

时间:2017-06-06 08:01:00

标签: php arrays search multidimensional-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);

5 个答案:

答案 0 :(得分:2)

如果您查看array_search方法说明http://php.net/manual/ro/function.array-search.php,它会说:如果在数组中找到,则返回针的键,否则返回FALSE。有你的答案。

答案 1 :(得分:2)

http://php.net/manual/en/function.array-search.php

此函数可能返回布尔值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

其他每个值都被视为TRUE(包括任何资源和NAN)。

答案 2 :(得分:2)

如果在数组中找到,则

array_search()函数返回针的键,否则返回FALSE。因此,当您在返回值上使用gettype()时,对于不成功的搜索,它将返回FALSE的类型,即BOOLEAN,否则为INT索引值。

答案 3 :(得分:2)

你的代码工作正常,当找不到array_search时返回false和gettype($ match);然后显示布尔值,如果找到则返回索引,所以在这种情况下返回integer

这是返回的代码

<?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);

,输出为:integer

这是正常的例子

<?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;
?>

了解更多信息

http://php.net/manual/ro/function.array-search.php

答案 4 :(得分:1)

array_search()在无法在大海捞针中找到针头时返回FALSE

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

echo(FALSE);不会打印任何内容。确实FALSE的类型是booleanFALSE==,空字符串(''),零(0),包含数字零的字符串'0'){{3 }}