PHP array_search错误?

时间:2017-05-09 16:16:08

标签: php arrays

我试图在多数组变量中找到一个值。 花了太多时间才找到我的臭虫......

试试这段代码:

$aa = array("nombre" => "HOLA", "v" => 0);
$bb = array("nombre" => "HOLB", "v" => 0);
$cc = array("nombre" => "HOLC", "v" => 0);
$dd = array($aa,$bb,$cc);

if (in_array("HOLA",array_column($dd,"nombre")))
     echo "in_array = yes";
else
     echo "in_array = no";

echo "<br>";

if (array_search("HOLA",array_column($dd,"nombre")))
     echo "array_search = yes";
else
     echo "array_search = no";

我得到的答案是:

in_array = yes
array_search = no

这是假定的行为吗?

2 个答案:

答案 0 :(得分:2)

是。 array_search的文档说明如下:

  

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

您获得的值 0 ,这是if失败,但是答案正确。

答案 1 :(得分:1)

array_sarch将返回找到结​​果的索引,因此在您的情况下'HOLA'位于0索引处,这会导致条件失败。 你应该像这样检查

if (array_search("HOLA",array_column($dd,"nombre")) !== false)