php数组获取某个元素的订单号

时间:2011-09-25 23:34:15

标签: php arrays

假设我在PHP中有一个数组

$test['michael_unique_id'] = 3;
$test['john_unique_id'] = 8;
$test['mary_unique_id'] = 10;
.
.
.
.
$test['jimmy_unique_id'] = 4;

(值(3,8,10 ......... 4)是唯一的)

假设我想搜索唯一的id 10,并获取数组中匹配元素的顺序。在这个例子中,第三个元素的值为10,所以我应该得到数字3。

我可以通过使用for循环扫描来查找我正在搜索的值,然后在我有匹配时获取$ i值,但我想知道是否有任何内置函数(或更好的方法) )实现这一点。

2 个答案:

答案 0 :(得分:3)

您可以将所有数组的值作为带array_values()的数组获取,然后使用array_search()获取该数组中该值的位置(偏移量)。

$uniq_id  = 10;
$all_vals = array_values($test);  // => array(3, 8, 10, ... )
echo array_search( $uniq_id, $all_vals ); // => 2

因为PHP数组索引从零开始,所以第一个项目为0,第二个项目为1,等等。如果您希望第一个项目为“1”,则只需添加一个。现在一起:

$uniq_id = 10;

echo array_search( $uniq_id, array_values( $test ) ) + 1; // => 3

但是,我不清楚这是否必须像执行foreach一样高效:

$uniq_id  = 10;
$idx      = 1;

foreach($test as $val) {
  if($val == $uniq_id) {
    break;
  }

  $idx++;
}

echo $idx; // => 3

答案 1 :(得分:1)

好吧,array_search会给你钥匙,但在你的情况下,你想要那个钥匙的索引,所以我相信循环是你最好的选择。您是否有充分的理由需要索引?这对我来说似乎没什么用。