当我有一个唯一的数组值时,如何从关联数组中获取数组的其他元素

时间:2013-12-12 09:22:36

标签: php arrays

Array
(
    [0] => Array
        (
            [id] => 61
            [title] => werwer
        )

    [1] => Array
        (
            [id] => 63
            [title] => test
        )

    [2] => Array
        (
            [id] => 88
            [title] => test 2
        )
)

如何在没有循环的情况下获得上述类型数组中具有id=63的标题。

3 个答案:

答案 0 :(得分:1)

实际上,如果没有循环,你就无法做到这一点。这并不意味着你必须使用 loop (foreach / while e t.c.) - 但是使用数组函数你将在内部迭代数组。

例如,在PHP 5.5中:

$array = [
['id'=>63, 'title'=>'foo'],
['id'=>65, 'title'=>'bar']
];
//use this - if there are more than 2 connected to `id` fields:
$ids    = array_flip(array_column($array, 'id'));//here is iteration, gathering id column
$result = $array[$ids[63]]['title'];
//or else, if `title` is always the only field:
$result = array_column($array, 'title', 'id')[63];
//var_dump($result);

- 等等。 array_search() array_walk()(或类似方式)将隐藏您的迭代,但无论如何都会完成。

答案 1 :(得分:0)

那么你可以尝试一些像这样的疯狂的东西

array_search(61,
    array_combine(
            array_map(function ($a) {
                return $a['title'];
            }, $arr),
            array_map(function ($a) {
                return $a['id'];
            }, $arr)));

但是它非常无效(2个array_map,array_combine和array_search中有4个循环“隐藏”)。我建议使用循环 - 就像@JustAPirate写的那样。

$arr = array(array('id' => 61, 'title' => 'werwer'),
        array('id' => 62, 'title' => 'asdasd'),
        array('id' => 63, 'title' => 'qweqwe'),);

function f($arr, $id) {
    foreach ($arr as $a) {
        if ($a['id'] == $id)
            return $a['title'];
    }
}

var_dump(f($arr, 61));

答案 2 :(得分:-1)

如果您还不知道数组中id 63的索引,则无法在没有循环的情况下获取它。

foreach($array as $element) {
    if($element['id'] == 63) {
        echo $element['title'];
    }
}

您可以更改数组的结构:

$array = array(61 => 'werwer', 63 => 'test', 88 => 'test 2');

这将导致:

Array
(
    [61] => 'werwer'
    [63] => 'test'
    [88] => 'test 2'
)

然后你可以用$ array [63]

访问/获取它