一些关于array_search的PHP编码,结果出乎意料

Tom*_*ang 1 php arrays multidimensional-array laravel

我想从数组中查找键值,如果不存在,则将数组集插入数组列表中

如果我搜索蓝色,它将返回Y,但是如果我搜索绿色,则返回N

$people = array(
  0 => array(
'name' => 'John',
'fav_color' => 'green'
 ),
1=> array(
  'name' => 'Samuel',
  'fav_color' => 'blue'
)
);
$found_key = array_search('green', array_column($people, 'fav_color'));

if($found_key){
    print_r("Y");
}else{
    print_r("N");
}
Run Code Online (Sandbox Code Playgroud)

期望搜索蓝色或绿色返回Y

Rah*_*hul 6

按照array_search文档中写的注释

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

在您的情况下,green值的索引为0。在if语句0中表示false。为了摆脱这个问题,您需要严格类型检查array_search返回的值,如下所示。

if ($found_key !== false) { // strict type check
    print_r("Y");
} else {
    print_r("N");
}
Run Code Online (Sandbox Code Playgroud)

演示版