1 | $r =mysql_query( 'select orderid,zhuangtai,group_concat(`name`) as name,group_concat(`shouji`) as shouji,group_concat(`sex`) as sex from `order` group by orderid' ); echo "<table width=950 border='1px solid'>" ; echo "<tr><th>姓名</th><th>手机</th><th>性别</th></tr>" ; while ( $row =mysql_fetch_assoc( $r )){ $shouji_arr = explode ( ',' , $row [ 'shouji' ]); $sex_arr = explode ( ',' , $row [ 'sex' ]); echo "<td colspan=3>订单号:" . $row [orderid]. " 状态:" . $row [ 'zhuangtai' ]. "</td>" ; foreach ( explode ( ',' , $row [ 'name' ]) as $k => $v ){ echo "<tr>" ; echo "<td>$v</td><td>$shouji_arr[$k]</td><td>$sex_arr[$k]</td>" ; echo "</tr>" ; }} echo "</table>" ;
|
登入後複製
这是一个循环输出的列子,我想知道,怎么得到
1 | <td> $v </td><td> $shouji_arr [ $k ]</td><td> $sex_arr [ $k ]</td>
|
登入後複製
中,$v的个数呢? 意思就是,怎么得到实际输出显示之后,这个有多少行呢?因为我需要增加一个合并的单元格,类似与 合并的单元格 因为不知道这组中有多少行,也就是$v的个数,所以不知道rowspan 这个值是多少!
不知道我的表述,大家听没听清楚,就是 这个foreach 输出显示,但是不能确定输出多少行,需要得到$v的个数,因为一个$v占一行!
回复讨论(解决方案)
foreach( $t=explode(',',$row['name']) as $k=>$v){
count($t) 就是 $v 的个数
你也可以在 SQL 串中加一个 count(*) 来得到
你也可以在 foreach循环外面 定义一个整形变量为0
在循环体里面 自增
例如
$i=0;
foreach()
{
$i++;
}
本帖最后由 xuzuning 于 2013-03-16 15:55:30 编辑
foreach($t=explode(',',$row['name']) as $k=>$v){
count($t) 就是 $v 的个数
你也可以在 SQL 串中加一个 count(*) 来得到
非常感谢版主的回答,还有@zhangbin1988 的回答,如果我直接在foreach 里增加一个
1 | <td rowspan= '".count($t)."' >12121</td>
|
登入後複製
的话,虽然是合并单元格了,但是这个合并的单元格也会循环输出count($t)次,怎么让这个单元格只输出一次呢?如果吧这个单元格单独放在foreach 的外面,是错位的,请教大大们!
$t = explode(',',$row['name']);
$s = "
合并的单元格的内容";
foreach($t as $k=>$v){
echo "" . $s;
echo "$v
$shouji_arr[$k]
$sex_arr[$k]";
echo "";
$s = ''; //输出过了就清空
}