阵列搜索中的问题

时间:2010-02-01 20:44:55

标签: php search arrays

我正在尝试在数组中查找值。此数组始终以0开头。 不幸的是,array_search开始使用数组元素1进行搜索。 所以第一个元素总是被忽视。

我如何“移位”此数组以1开头,或者使数组搜索从0开始?该阵列来自XML Web服务,因此我无法对结果进行修改。

2 个答案:

答案 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);