Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
获取多维数组的索引,值为php_Php_Arrays - Fatal编程技术网

获取多维数组的索引,值为php

获取多维数组的索引,值为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

我想得到一个没有foreach的数组的索引。这是示例数组

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能根据他的数组长度做出最佳选择,因为这不是每个搜索的必要解决方案。。。