-5

使用这个数组

array(
    array('status'=>1, 'name'=>'James Wah'),
    array('status'=>1, 'name'=>'James Weh'),
    array('status'=>2, 'name'=>'James Wih'),
    array('status'=>2, 'name'=>'James Woh'),
    array('status'=>2, 'name'=>'James Wuh'),
)

我怎么能这样输出

  • 詹姆斯·华
  • 詹姆斯·韦
  • 詹姆斯·威
  • 詹姆斯·沃
  • 詹姆斯·吴

只使用一个 foreach() 并且有两个

4

3 回答 3

5

试试这个,现在它显示不同的状态组:

$status = $data[0]['status'];
echo "<ul>";
foreach($data as $value) {
    if($status != $value['status'])
        echo "</ul><br /><ul>";
    echo "<li>".$value['name']."</li>";
    $status = $value['status'];
}
echo "</ul>";
于 2013-07-11T10:34:27.817 回答
1
$ul = '<ul>';
foreach($arr as $v) {
 $ul.='<li>'.$v['name'].'</li>';
}
$ul.='</ul>';

那将是一个简单的解决方案,我认为仅使用一个 foreach 是不可能的,因为 implode 在这里不起作用,因为必须在前后添加胶水

$sortbyStatus = array();
foreach($arr as $v) {
 $sortbyStatus[$v['status']][] = $v['name'];
}

$uls='';
foreach($sortByStatus as $vals) {
 $uls.'<ul>';
 foreach($vals as $v) {
   $uls.='<li>'.$v.'</li>';
}
 $uls.='</ul>;
}

}

于 2013-07-11T10:32:29.603 回答
1

代码:

echo "<ul>";
foreach($statuses as $status) {
echo "<li>". $status['name'] . "</li>";
}
echo "</ul>";

更新:

您可以使用$count变量来创建分隔。例子:

$count = 0;
echo "<ul>";
foreach($statuses as $status) {
    if($count==2){
    echo "<li>". $status['name'] . "</li><br/>"; 
    }
    else{
    echo "<li>". $status['name'] . "</li>";
    }
    $count++;
}
echo "</ul>";

更新的输出:

• James Wuh
• James Weh
• James Wih

• James Woh
• James Wuh

键盘:http ://codepad.org/NyLIAUNI

更新:http ://codepad.org/xhmlCwXW

希望这可以帮助!

于 2013-07-11T10:41:37.557 回答