0

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

从逻辑上讲,我假设我需要获取键,然后为每个键循环遍历多维数组,并将该迭代的相应键的值推送到新数组中。

每个内部数组都非常大,理想情况下我想设置它,以便如果该数组更改其对数,它仍然可以正常工作。

我觉得我知道这里的一些成分,但似乎无法将它们组合在一起。

示例数组:

$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');

等等等等

任何和所有的帮助将不胜感激。

4

2 回答 2

3

变量变量似乎是您正在寻找的:

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

        array_push($$key, $value);
    }
}
于 2013-11-09T21:24:41.273 回答
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);
}

可能更可行

于 2013-11-09T21:26:52.090 回答