2013-06-03 107 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']; 
} 

這應該工作:)

相關問題