15 ); echo "PHP-Versi-6ren">
gpt4 book ai didi

php - 为什么 array_search 找不到,除非数组已排序?

转载 作者:行者123 更新时间:2023-12-02 15:28:50 25 4
gpt4 key购买 nike

我无法理解 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根本没有提到这样的要求。有人可以解释这种行为吗?

最佳答案

15位于键0处。 array_search 返回此 00 的计算结果为 false。因此,您对键 0 的检查 if (!$key) 失败。您必须检查严格的 === falsethe manual中有一个巨大的红色警告对此进行解释。

关于php - 为什么 array_search 找不到,除非数组已排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18074891/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com