2013-06-03 108 views
2

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

所以这里的阵列我有:

$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

这看起来更像是一种重组,而不是一种排序 –

+0

是的,并不完全知道如何去描述它。 –

+0

如果您确实需要对它进行排序以及重新构建,可以尝试使用http://www.php.net/manual/en/function.array-multisort.php的示例#3中的代码 – Pudge601

回答

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

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

var_dump($after); 
0

也许是这样的:

foreach ($input as $item) { 
    foreach ($item as $field => $value) { 
     $result[$field][] = $value; 
    } 
} 
    var_dump($result); 
2

您可以使用array_reduce

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

Live DEMO

0
$After = array(); 
foreach ($Before as $a) { 
    $After['ids'][] = $a['id']; 
    $After['names'][] = $a['name']; 
} 

这应该工作:)

相关问题