根据初始密钥对PHP数组进行排序?

时间:2013-06-03 11:42:34

标签: php arrays sorting

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

所以这是我拥有的数组:

$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 个答案:

答案 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;
});

Live DEMO

答案 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'];
}

这应该有效:)