2

我想将包含许多键和值的初始数组排序为按特定键排序的数组,以及基于该键的单个数组中该键的所有值。

所以这是我拥有的数组:

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

我希望这是有道理的。我发现向您展示一个示例更容易,而不是描述它。

4

4 回答 4

2
$after = array(
    'ids'   => array(),
    'names' => array()
);

foreach($before as $row){
    $after['ids'][]   = $row['id'];
    $after['names'][] = $row['name'];
}

var_dump($after);
于 2013-06-03T11:46:36.493 回答
2

您可以使用array_reduce

$After = array_reduce($Before, function ($a, $b) {
    $a['ids'][] = $b['id'];
    $a['names'][] = $b['name'];
    return $a;
});

现场演示

于 2013-06-03T11:49:18.577 回答
0

也许是这样的:

foreach ($input as $item) {
    foreach ($item as $field => $value) {
        $result[$field][] = $value;
    }
}
    var_dump($result);
于 2013-06-03T11:47:26.653 回答
0
$After = array();
foreach ($Before as $a) {
    $After['ids'][] = $a['id'];
    $After['names'][] = $a['name'];
}

这应该工作:)

于 2013-06-03T11:51:12.170 回答