在CakePHP中提取子数组结果key = id和value = name

时间:2015-04-01 16:18:28

标签: php arrays cakephp

我有这个嵌套数组:

Array
(
    [id] => 1
    [name] => Group 1
    [0] => Array
        (
            [id] => 1
            [name] => Group 1
        )

    [1] => Array
        (
            [id] => 2
            [name] => Group 2
        )

    [2] => Array
        (
            [id] => 7
            [name] => Group 7
        )

)

我想在一个数组中提取子数组[0][1][2]但是遵循以下格式:

array(
[id] => [name]
)

换句话说,我希望得到这样的结果:

Array
(
    [1] => Group 1
    [2] => Group 2
    [7] => Group 7
)

*注意:我尝试使用Set::classicExtract($my_array['Group'], '{n}.name');,但我无法弄清楚如何将group.id作为我的数组的键。任何指导将不胜感激。

2 个答案:

答案 0 :(得分:0)

这应该适合你:

(此处我首先array_filter()所有值都没有数字键。之后我只需array_combine() id列,其中包含name列我得到了array_column()

<?php

    $result = array_filter($arr, function($k){
        return is_numeric($k);
    }, ARRAY_FILTER_USE_KEY);

    $result = array_combine(array_column($result, "id"), array_column($result, "name"));  

    print_r($result);

?>

输出:

Array ( [1] => Group 1 [2] => Group 2 [7] => Group 7 )

答案 1 :(得分:0)

我想是否有其他人会感兴趣。非常感谢快速回答,但我正在寻找使用CakePHP的解决方案。

Set::combine($my_array, '{n}.id', '{n}.name'); did the trick, cheers!