如何找到键值在数组中的位置

时间:2018-12-25 05:42:27

标签: php arrays

我有一个数组,其中包含用户ID和根据交易分类的交易详细信息。现在我需要找到键值的位置

Array
(
    [0] => Array
        (
            [userid] => 3
            [transaction] => 1878
        )

    [1] => Array
        (
            [userid] => 2
            [transaction] => 416
        )

    [2] => Array
        (
            [userid] => 5
            [transaction] => 353
        )

    [3] => Array
        (
            [userid] => 4
            [transaction] => 183
        )
)

当我给用户ID 4时,它应该返回3

4 个答案:

答案 0 :(得分:1)

我可能只是在这里迭代外部数组并检查键值:

$pos = -1;
for ($i = 0; $i < count($array); $i++) {
    if ($array[$i]['userid'] == 4) {
        $pos = $i;
    }
}

if ($pos == -1) {
    echo "user not found";
}
else {
    echo "user found at position " . $pos;
}

答案 1 :(得分:1)

首先,使用array_column()来获取所有userid,然后使用array_search()来获取数组键。

$searchId = 4;
echo array_search( $searchId, array_column($array, 'userid') ) );

答案 2 :(得分:0)

我更喜欢Calos's答案。

下面的代码模仿JavaScript的Array.prototype.findIndex来实现您所需要的。使用这种方法,您可以通过使用回调函数来更灵活地搜索数组,这类似于JavaScript的实现方式。

您还可以轻松地在代码的其他部分重复使用它。

$data = [
    [
        'userid' => 3,
        'transaction' => 1878
    ],
    [
        'userid' => 2,
        'transaction' => 416
    ],
    [
        'userid' => 5,
        'transaction' => 353
    ],
    [
        'userid' => 4,
        'transaction' => 183
    ]
];

function findIndex($array, $method){
    foreach($array as $index => $value){
        if ($method($value, $index, $array) === true){
            return $index;
        }
    }
}

echo findIndex($data, function($arr){ 
    return $arr['userid'] == 5;
});

答案 3 :(得分:0)

构建自己的地图很简单:

<?php

$items = 
[
    'foo' =>
        [
            'id' => 23,
        ],
    'bar' =>
        [
            'id' => 47
        ]
];

foreach($items as $k=>$v)
    $ids_keys[$v['id']] = $k;

echo $ids_keys[47];

输出:

bar