假设我在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值,但我想知道是否有任何内置函数(或更好的方法) )实现这一点。
答案 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
会给你钥匙,但在你的情况下,你想要那个钥匙的索引,所以我相信循环是你最好的选择。您是否有充分的理由需要索引?这对我来说似乎没什么用。