当我想检查数组中是否有东西并取回密钥时,我使用array_search()函数。
为什么当我比较函数完全等于true(=== true)时它返回false,当我将它与不完全等于false(!== false)时它返回true? / p>
<?php
if(array_search($value, $array) === true)
{
// Fails
}
if(array_search($value, $array) !== false)
{
// Succeeds
}
?>
提前致谢。
答案 0 :(得分:8)
array_search会返回针头。只有在找不到匹配时才返回false。这就是为什么在您的情况下只有相反的情况。
如果在数组中找到,则返回针的键,FALSE 否则。
答案 1 :(得分:1)
晚会,但想添加一些上下文/示例:
array_search将返回键(如果找到值) - 可能是0
- 并且如果值为FALSE >未找到。它从不返回TRUE
。
此代码可以更好地总结:
// test array...
$array = [
0 => 'First Item',
1 => 'Second Item',
'x' => 'Associative Item'
];
// example results:
$key = array_search( 'First Item', $array ); // returns 0
$key = array_search( 'Second Item', $array ); // returns 1
$key = array_search( 'Associative Item', $array ); // returns 'x'
$key = array_search( 'Third Item', $array ); // returns FALSE
由于0
是假名值,因此您不希望执行if ( ! array_search(...) ) {
之类的操作...因为它会在0
索引项上失败。
因此,使用它的方式如下:
$key = array_search( 'Third Item', $array ); // returns FALSE
if ( FALSE !== $key ) {
// item was found, key is in $index, do something here...
}
答案 2 :(得分:0)
array_search()
不会返回true。
如果只返回 false ,如果找不到任何内容,否则会返回匹配元素的键。
根据manual
array_search - 在数组中搜索给定值,如果成功则返回相应的键 ....
如果在数组中找到针,则返回针的键,否则返回FALSE。
答案 3 :(得分:0)
它会失败,因为如果调用成功,则返回密钥no true。
如果找不到false,则返回false = = false is ok
来自手册:
如果在数组中找到针,则返回针的键,否则返回FALSE。