2011-02-06 100 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

是否有任何需要此:`如果(isset($分組[$組]){$分組[$組] =陣列();}` – NAVEED 2011-02-06 20:15:00

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>"; 
} 

這應該工作,但如果它不對你沒關係,你也可以改變它你的硬編碼陣列的結構,那麼你不會需要我的第一個foreach

相關問題