2011-09-12 15 views
0

私は一日中これを試してきました! 一番上の多次元配列を一番下にどのように変換できますか?PHPで多次元配列を合理化する方法は?

Array (
[0] => Array ([id] => 34 [email] => [email protected]) 
[1] => Array ([id] => 34 [email] => [email protected]) 
[2] => Array ([id] => 33 [email] => [email protected]) 
[3] => Array ([id] => 33 [email] => [email protected]) 
[4] => Array ([id] => 33 [email] => [email protected]) 
) 

Array (
[0]=>Array ([id] => 34 [email] => Array ([0]=> [email protected] [1]=>[email protected]) 
[1]=>Array ([id] => 33 [email] => Array ([0]=> [email protected] [1]=>[email protected] [2]=>[email protected]) 
) 

多くのおかげです。

答えて

1
$new_array = array(); 
foreach ($orig_array as $child) { 
    $new_array[$child['id']][] = $child['email']; 
} 

$final_array = array(); 
foreach($new_array as $child) { 
    $final_array[] = $child; 
} 

最初のループは、idフィールドをキーにして配列を生成し、単純に各電子メールアドレスをプッシュします。 2番目のループはその中間配列をとり、0,1、etc ...キーのために別の配列をラップします。

+0

2番目のループがキーをドロップします。しかし、vasilwが言っているように、「IDを格納するためにキーを使う」というのは、私が質問したものよりも理にかなっていて、あなたの最初のループはそれを完全に作り出します。 (私は一度あなたの回答を投票することを覚えようと思います:-)ありがとうございます。 – DavidM