我有一个多维数组,我想按键拆分,理想情况下我想从多维数组的键值动态创建新的命名数组。
逻辑上,我假设我需要获取密钥,然后通过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');
等等
任何和所有帮助都将受到大力赞赏。
答案 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);
}
可能更可行