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

相关问题