PHP - 从其他密钥获取密钥值

时间:2015-04-01 20:33:48

标签: php arrays multidimensional-array

我有以下数组:

$array = Array(
    "0" => Array (
        "id" => 1081,
        "name" => "John"
    ), 
    "1" => Array (
        "id" => 1082,
        "name" => "Matt"
    ),
    "2" => Array (
        "id" => 1083,
        "name" => "Roger"
    )
);

如果我只知道name但是不必遍历数组,我可以获得id吗?

3 个答案:

答案 0 :(得分:2)

对于PHP> = 5.5.0:

$id = 1082;
$result = array_column($array, 'name', 'id')[$id];

正如Barmar所指出的,要获得一个易于使用id作为索引的数组:

$id = 1082;
$result = array_column($array, 'name', 'id');
echo $result[$id];

答案 1 :(得分:1)

您可以创建一个引用相同元素的关联数组,然后使用它:

function make_assoc(&$array, $keyname) {
    $new_array = array();
    foreach ($array as &$elt) {
        $new_array[$elt[$keyname]] = $elt;
    }
    return $new_array;
}

$assoc_array = make_assoc($array, 'id');

现在,您可以使用$assoc_array[1083]访问原始数组中的第三个项目。因为这会返回一个引用数组,修改它也会修改原始数组的元素。

答案 2 :(得分:0)

如果您的PHP<

您可以使用array_map搜索您的数组。 5.5.0并且您没有array_column

<?php

$array = Array(
    "0" => Array (
        "id" => 1081,
        "name" => "John"
    ), 
    "1" => Array (
        "id" => 1082,
        "name" => "Matt"
    ),
    "2" => Array (
        "id" => 1083,
        "name" => "Roger"
    )
);

$find = 1082;
$value = '';

$arr = array_map(function($n) use ($find, &$value) {if ($n['id'] == $find) $value = $n['name']; }, $array);


print_r($value);

?>