阵列搜索中的问题

Mac*_*lor 5 php arrays search

我试图在数组中找到值.这个数组总是从0开始.不幸的是,array_search开始使用数组元素1进行搜索.因此,第一个元素总是被忽略.

我怎么能"移动"这个数组以1开始,或者使数组搜索从0开始?该阵列来自XML Web服务,因此我无法对结果进行修改.

mea*_*gar 14

array_search没有启动索引1搜索试试这个例子:

<?php
$array = array(0 => 'blue', 1 => 'red', 2 => 'green', 3 => 'red');
$key = array_search('blue', $array);  // $key = 0
?>
Run Code Online (Sandbox Code Playgroud)

无论你的代码是什么问题,它的第一个元素都不是索引0.

您更有可能使用==而不是===检查返回值.如果array_search返回0,表示第一个元素,则以下代码将不起作用:

// doesn't work when element 0 is matched!
if (false == array_search(...)) { ... }
Run Code Online (Sandbox Code Playgroud)

相反,您必须检查使用===,它比较值和类型

// works, even when element 0 is matched
if (false === array_search(...)) { ... }
Run Code Online (Sandbox Code Playgroud)


Far*_*had 3

请参阅手册,它可能对您有帮助: 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);
Run Code Online (Sandbox Code Playgroud)