在以下示例中,我无法理解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) - 严格的字符串搜索找到该值,数字搜索没有找到它。当数组排序时,所有搜索都会找到它 - 但文档根本没有提到这样的要求。有人可以解释这种行为吗?