【问题标题】:Problem in array search数组搜索中的问题
【发布时间】:2011-01-11 21:41:16
【问题描述】:

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

我怎样才能“转移”这个数组以从 1 开始,或者让数组搜索从 0 开始?该数组来自 XML Web 服务,因此我无法修改结果。

【问题讨论】:

  • 也许您应该显示您的代码以及您的搜索方式,因为显然array_search 工作正常但也许它不适合您的目的。

标签: php search arrays


【解决方案1】:

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(...)) { ... }

【讨论】:

【解决方案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);

【讨论】:

  • hmmthanx 但是你能解释更多吗,因为我使用了零但不工作。 array_search() 是否从 0 键开始?
  • 确定索引键为零,看下meagar所说的为例
  • 这个例子在技术上可以解决你的问题,但是生成的键会指向你想要查找的元素之后的 1。不过,您仍然会找到元素 0。因此,它返回的键实际上不会告诉您在哪里可以找到数据。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-14
  • 2018-05-05
  • 2020-08-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多