2011-02-06 7 views
1

同じキーを持つ配列をマージしたい場合があります。例同じ配列を重複して表示することなく、同じ配列をマージする方法

$options = array(
    array("group" => "header","title" => "Content 1"), 
    array("group" => "header","title" => "Content 2"), 
    array("group" => "menu","title" => "Content 3"), 
    array("group" => "content","title" => "Content 4"), 
    array("group" => "content","title" => "Content 5"), 
    array("group" => "content","title" => "Content 6"), 
    array("group" => "footer","title" => "Content 7") 
); 
foreach ($options as $value) { 
    if ($value['group']) { 
     echo "<div class='{$value['group']}'>"; 
     echo $value['title']; 
     echo "</div>"; 
    } 
} 

電流出力は

<div class='header'>Content 1</div><div class='header'>Content 2</div><div class='menu'>Content 3</div><div class='content'>Content 4</div><div class='content'>Content 5</div><div class='content'>Content 6</div><div class='footer'>Content 7</div> 

私はここにしたいことは

<div class='header'> 
Content 1 
Content 2 
</div> 
<div class='menu'> 
Content 3 
</div> 
<div class='content'> 
Content 4 
Content 5 
Content 6 
</div> 
<div class='footer'> 
Content 7 
</div> 

は、私はこれは動作するはず

答えて

4
$grouped = array(); 

foreach($options as $option) { 
    list($group, $title) = array_values($option); 
    if (!isset($grouped[$group])) { 
     $grouped[$group] = array(); 
    } 
    $grouped[$group][] = $title; 
} 

foreach ($grouped as $group => $titles) { 
    echo sprintf('<div class="%s">%s</div>', $group, implode('', $titles)); 
} 
+1

このための任意の必要性が存在する: 'IF(ISSET($グルーピング[$グループ]){$グループ化[$基] =配列();}' – NAVEED

+1

http://codepad.org/6s7TY9VO! – NAVEED

+0

いいえ、それは必要ではありませんが、私は、コードをより明示的に追加しました。 – singles

2
$groups = array(); 

foreach ($options as $value) { 
    if (!isset ($groups[$value['group']])) { 
     $groups[]['group'] = $value['group'] 
    } 
    $groups[$value['group']]['title'][] = $value['title']; 
} 

foreach ($groups as $group) { 
    echo "<div class="{$group['group']}">"; 
    echo implode ("\n", $group['title']); 
    echo "</div>"; 
} 

を知ってみましょうが、それはdoesnの場合になることですですあなたには関係なく、あなたはあなたのハードコードされた配列の構造は、私の最初のforeachが必要ないでしょう。

関連する問題