php数组获取某个元素的顺序号

php数组获取某个元素的顺序号,php,arrays,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循环进行扫描来查找我正在搜索的值,然后在有匹配

假设我有一个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值,但我想知道是否有任何内置函数(或更好的方法)可以实现这一点。

嗯,
数组_search
将为您提供键,但在您的情况下,您需要该键的索引,所以我相信循环是你最好的选择。您需要索引的原因是否充分?它对我来说似乎不是很有用。

您可以使用
array\u values()
作为数组获取数组的所有值,然后使用
array\u 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

我不相信有函数,因为字典数组背后的想法是能够通过其键访问某个元素(在您的示例中,键“mary_unique_id”而不是3,您可以通过
数组搜索(10,$test)
找到)。你能解释一下,你想用你的代码实现什么吗?正如@Lars所说,没有这样的功能;但是,为了有效地执行此操作,您应该确保在找到匹配项后立即退出for循环。可能他正在为不同的属性使用并行数组,只有公共链接是索引(所有并行数组中的第三个元素定义单个对象/实体的属性)。