我试图在多数组变量中找到一个值。 花了太多时间才找到我的臭虫......
试试这段代码:
$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
这是假定的行为吗?
答案 0 :(得分:2)
是。 array_search的文档说明如下:
警告:此函数可能返回布尔值FALSE,但也可能返回非布尔值,其值为FALSE。有关更多信息,请阅读有关布尔值的部分。使用===运算符测试此函数的返回值。
您获得的值 0 ,这是if
失败,但是答案正确。
答案 1 :(得分:1)
array_sarch
将返回找到结果的索引,因此在您的情况下'HOLA'
位于0
索引处,这会导致条件失败。
你应该像这样检查
if (array_search("HOLA",array_column($dd,"nombre")) !== false)