我無法理解在下面的例子中array_search結果(並沒有發現討論這個任何存在的問題):爲什麼array_search找不到,除非數組被排序?
<?php
$values = array(
15,
12,
"15",
34,
15 => 25,
"xx" => 15
);
echo "PHP-Version is " . phpversion();
echo "<h1>Array:</h1><pre>";var_dump($values);echo "</pre>";
// sort($values); // remove comment and 15 will be found in ALL cases!
$key = array_search("15",$values);
show_result('(a) Searching "15"');
$key = array_search("15",$values,true);
show_result('(b) Searching "15",true');
$key = array_search(15,$values);
show_result('(c) Searching 15');
$key = array_search(15,$values,false);
show_result('(d) Searching 15,false');
$key = array_search(15,$values,true);
show_result('(e) Searching 15,true');
function show_result($tit) {
global $key,$values;
echo "<h2>$tit</h2>";
if (!$key) {
echo "Not found";
} else {
echo "Found key $key - " . gettype($values[$key]);
}
}
?>
只搜索(B) - 嚴格的字符串搜索找到了這個值,數字搜索沒有找到它。所有的搜索都會在數組排序後找到它 - 但doc根本沒有提到這樣的要求。有人可以解釋這種行爲嗎?
if($ key === false)因爲索引0也是false。 – Salketer
一旦OP已經閱讀手冊。太糟糕了,你沒有完整閱讀它。 ;-P – deceze