获取多维数组的索引,值为php
我想得到一个没有foreach的数组的索引。这是示例数组获取多维数组的索引,值为php,php,arrays,Php,Arrays,我想得到一个没有foreach的数组的索引。这是示例数组 Array ( [0] => Array ( [gcr_distance] => 31.0 [gcr_id] => 23 ) [1] => Array ( [gcr_distance] => 28.0 [gcr_id] => 22
Array
(
[0] => Array
(
[gcr_distance] => 31.0
[gcr_id] => 23
)
[1] => Array
(
[gcr_distance] => 28.0
[gcr_id] => 22
)
[2] => Array
(
[gcr_distance] => 26.0
[gcr_id] => 20
)
[3] => Array
(
[gcr_distance] => 110.0
[gcr_id] => 21
)
)
假设我的数据是gcr\u id=21,通过与上面的数组进行比较,它应该给我数组的索引<3,您可以使用和的组合
array\u column
返回键为'gcr\u id'
的所有值,然后array\u search
返回值为21
的键
$array = array(
array('gcr_distance' => 31.0, 'gcr_id' => 23),
array('gcr_distance' => 28.0, 'gcr_id' => 22),
array('gcr_distance' => 26.0, 'gcr_id' => 20),
array('gcr_distance' => 110.0, 'gcr_id' => 21)
);
$key = array_search(21, array_column($array, 'gcr_id'));
echo $key;
输出:
3
受@elemental评论的启发,我做了一些台架测试。我发现,在一个100k的条目数组中,
array\u search
和array\u column
大约占基于foreach
的搜索在条目不在数组中时的80%,其中95%在调用array\u column
时。因此,似乎平均而言,基于foreach
的搜索速度更快。您可以使用和的组合array\u column
返回键为'gcr\u id'
的所有值,然后array\u search
返回值为21
的键
$array = array(
array('gcr_distance' => 31.0, 'gcr_id' => 23),
array('gcr_distance' => 28.0, 'gcr_id' => 22),
array('gcr_distance' => 26.0, 'gcr_id' => 20),
array('gcr_distance' => 110.0, 'gcr_id' => 21)
);
$key = array_search(21, array_column($array, 'gcr_id'));
echo $key;
输出:
3
受@elemental评论的启发,我做了一些台架测试。我发现,在一个100k的条目数组中,
array\u search
和array\u column
大约占基于foreach
的搜索在条目不在数组中时的80%,其中95%在调用array\u column
时。所以看起来平均来说,基于foreach
的搜索速度会更快。此评论不适用于@Nick,因为您的答案很好,而且无论我们说什么,您都刚刚回答了OP问题。此评论是针对OP本人的:您好。我理解您的问题。但是,您知道您正在搜索的密钥是否在第一种情况下,数组的长度是否为例如1000000或更多,您将使您的服务器完全免费工作。它将首先执行array\u列,然后执行array\u搜索OP:我认为在某些情况下,foreach是更好的解决方案。想想看……@elemental我用一些基准数据更新了我的答案fyiGreat answer,我玩了一会儿,看看是否能想出更快/不同的解决方案。这显然是赢家。干得好。。。不管我们说什么,你的回答都很好。我希望OP能根据其数组的长度做出最佳选择,因为这不是每个搜索的必要解决方案…此评论不适用于@Nick,因为您的答案很好,无论我们说什么,您都只回答了OP问题。此评论是针对OP本人的:嗨,我理解您的问题。但是您知道如果您正在搜索的密钥是在第一种情况下,并且您的数组长度是1000000或更多,您将使您的服务器毫无代价地工作。它将首先执行array\u列,然后执行array\u搜索OP:我认为在某些情况下,foreach是更好的解决方案。想想看……@elemental我用一些基准数据更新了我的答案fyiGreat answer,我玩了一会儿,看看是否能想出更快/不同的解决方案。这显然是赢家。干得好。。。不管我们说什么,你的回答都很好。我希望OP能根据他的数组长度做出最佳选择,因为这不是每个搜索的必要解决方案。。。