在PHP中通过键将多维数组拆分为新的一组简单数组

时间:2013-11-09 21:22:06

标签: php arrays sorting multidimensional-array

我有一个多维数组,我想按键拆分,理想情况下我想从多维数组的键值动态创建新的命名数组。

逻辑上,我假设我需要获取密钥,然后通过multidimensioal数组的每个密钥循环,并将该迭代的相应密钥的值推送到新数组。

每个内部数组都非常大,理想情况下我想设置它,这样如果该数组改变了它的数量,它仍将起作用。

我觉得我在这里知道一些成分,但似乎无法把它放在一起。

示例数组:

$data = Array(
    [0] => Array
    (
        [count] => 0
        [id] => 221
        [title] => Home
        [latitude] => -34.0284224
        [longitude] => 18.46636710000007
    ),
    [1] => Array
    (
        [count] => 1
        [id] => 321
        [title] => office
        [latitude] => -34.0284224
        [longitude] => 18.46636710000007
    ),
    [2] => Array
    (
        [count] => 2
        [id] => 124
        [title] => storage
        [latitude] => -34.0284224
        [longitude] => 18.46636710000007

    )
)

我想要制作的是:

$count = array(0,1,2);
$id = array(221,321,124);
$title = array('home','office','storage');

等等

任何和所有帮助都将受到大力赞赏。

2 个答案:

答案 0 :(得分:3)

Variable variables似乎正是您所寻找的:

foreach($data as $element) {
    foreach($element as $key => $value) {
        if(!isset($$key)) {
            $$key = array();
        }

        array_push($$key, $value);
    }
}

答案 1 :(得分:1)

如果您使用的是PHP> = 5.5,则array_column()可以为您执行此操作:

$count = array_column($data, 'count');
$id = array_column($data, 'id');
$title = array_column($data, 'title');

使其更通用:

foreach($data[0] as $key => $value) {
    $$key = array_column($data, $key);
}

但这里的危险是你不一定知道你正在创建的变量的名称

所以更通用 - 仍然

$newArray = array();
foreach($data[0] as $key => $value) {
    $newArray[$key] = array_column($data, $key);
}

可能更可行