我正在尝试在数组中查找值。此数组始终以0开头。 不幸的是,array_search开始使用数组元素1进行搜索。 所以第一个元素总是被忽视。
我如何“移位”此数组以1开头,或者使数组搜索从0开始?该阵列来自XML Web服务,因此我无法对结果进行修改。
答案 0 :(得分:14)
array_search
不开始在索引1处搜索。尝试此示例:
<?php
$array = array(0 => 'blue', 1 => 'red', 2 => 'green', 3 => 'red');
$key = array_search('blue', $array); // $key = 0
?>
无论你的代码有什么问题,它的第一个元素都不是索引0。
您更有可能使用==
代替===
来检查返回值。如果array_search返回0,表示第一个元素,则以下代码将不起作用:
// doesn't work when element 0 is matched!
if (false == array_search(...)) { ... }
相反,您必须使用===
进行检查,// works, even when element 0 is matched
if (false === array_search(...)) { ... }
比较值和类型
{{1}}
答案 1 :(得分:2)
请参阅手册,它可能对您有所帮助: http://www.php.net/manual/en/function.array-search.php
如果你要做的是使用一键增加键,你可以这样做:
function my_array_search($needle, $haystack, $strict=false) {
$key = array_search($needle, $haystack, $strict);
if (is_integer($key)) $key++;
return $key;
}
my_array_search($xml_service_array);