我想将包含许多键和值的初始数组,按特定键排序的数组以及基于键的单个数组中该键的所有值进行排序。
所以这是我拥有的数组:
$Before = Array(Array("id" => 1, "name" => "Dogs"),
Array("id" => 2, "name" => "Lions"),
Array("id" => 3, "name" => "Tigers"));
这就是我想最终得到的数组:
$After = Array("ids" => Array(1, 2, 3),
"names" => Array("Dogs", "Lions", "Tigers"));
我希望这是有道理的。我发现向你展示一个例子更容易,反对描述它。
答案 0 :(得分:2)
$after = array(
'ids' => array(),
'names' => array()
);
foreach($before as $row){
$after['ids'][] = $row['id'];
$after['names'][] = $row['name'];
}
var_dump($after);
答案 1 :(得分:2)
您可以使用array_reduce
$After = array_reduce($Before, function ($a, $b) {
$a['ids'][] = $b['id'];
$a['names'][] = $b['name'];
return $a;
});
答案 2 :(得分:0)
可能是这样的:
foreach ($input as $item) {
foreach ($item as $field => $value) {
$result[$field][] = $value;
}
}
var_dump($result);
答案 3 :(得分:0)
$After = array();
foreach ($Before as $a) {
$After['ids'][] = $a['id'];
$After['names'][] = $a['name'];
}
这应该有效:)