在foreach外面先设置一个变量,比如:$i=0,然后在foreach里面使用类似:
(++$i==1) $str:'';这样的语句来判断(这是三元运算符,不会的话也可以用if else来判断,效果是一样的),是否是循环的第一重;
$str的内容就是
<td rowspan="<php count($v); >"><php echo $value['custmerName'];></td>;这些代码片段你自己组织一下,因为不是IDE写出来的,所以可能有语法错误。你自己整理一下吧
$newList = array();foreach ($list as $v) { // $list 是你以前的数组
if (!isset($newList[$v['id']])) { // 如果新列表中还没有相应的id
$person = array('id'=> $v['id'], 'name'=>array($v['name'])), 'price'=>array($v['price'])));
$newList[$v['id']] = $person;
unset($person);
} else { // 如果已经存过,就只在该组下进行添加
$newList[$v['id']]['name'][] = $v['name'];
$newList[$v['id']]['price'][] = $v['price'];
}
}
$newList = array_values($newList); // 去掉索引
大概这么个意思,你试试,有什么问题我再改
<php$list = array
(
array("a",1,11),
array("b",2,12),
array("c",3,13),
array("d",4,14)
);
echo "name:"$list[0][0]": value1:"$list[0][1]", value11:"$list[0][2]"<br>";
echo "name:"$list[1][0]": value2:"$list[1][1]", value12:"$list[1][2]"<br>";
echo "name:"$list[2][0]": value3:"$list[2][1]", value13:"$list[2][2]"<br>";
echo "name:"$list[3][0]": value4:"$list[3][1]", value14:"$list[3][2]"<br>";
>大概思路就是,先任意取第一个值,然后循环和剩下的所有值比较,如果相等,$i++;再取第二个不等于第一个的值的值,继续循环比较,记录循环次数。然后就OK了,主要就是循环、比较,记录循环次数<php
function array_unique_fb($array2D){
foreach ($array2D as $v){
$v = join(",",$v); //降维,也可以用implode,将一维数组转换为用逗号连接的字符串
$temp[] = $v;
}
$temp = array_unique($temp); //去掉重复的字符串,也就是重复的一维数组
foreach ($temp as $k => $v){
$temp[$k] = explode(",",$v); //再将拆开的数组重新组装
}
return $temp;
}
$aa = array(
array('id' => 123, 'name' => '张三'),
array('id' => 123, 'name' => '李四'),
array('id' => 124, 'name' => '王五'),
array('id' => 123, 'name' => '李四'),
array('id' => 126, 'name' => '赵六')
);
$bb=array_unique_fb($aa);
print_r($bb)
>
显示结果:Array ( [0] => Array ( [0] => 123 [1] => 张三 ) [1] => Array ( [0] => 123 [1] => 李四 ) [2] => Array ( [0] => 124 [1] => 王五 ) [4] => Array ( [0] => 126 [1] => 赵六 ) )
百度一下就找到答案了
直接用 array_flip 或者 array_unique 是不行的,你这没有键名,必须要自己写函数
<phpfunction unique_arr($array2D,$stkeep=false,$ndformat=true)
{
// 判断是否保留一级数组键 (一级数组键可以为非数字)
if($stkeep) $stArr = array_keys($array2D);
// 判断是否保留二级数组键 (所有二级数组键必须相同)
if($ndformat) $ndArr = array_keys(end($array2D));
//降维,也可以用implode,将一维数组转换为用逗号连接的字符串
foreach ($array2D as $v){
$v = join(",",$v);
$temp[] = $v;
}
//去掉重复的字符串,也就是重复的一维数组
$temp = array_unique($temp);
//再将拆开的数组重新组装
foreach ($temp as $k => $v)
{
if($stkeep) $k = $stArr[$k];
if($ndformat)
{
$tempArr = explode(",",$v);
foreach($tempArr as $ndkey => $ndval) $output[$k][$ndArr[$ndkey]] = $ndval;
}
else $output[$k] = explode(",",$v);
}
return $output;
}
$arr = array(
0 => array
(
0 => 1,
1 => 2
),
1 => array
(
0 => 1,
1 => 2
),
2 => array
(
0 => 2,
1 => 3
),
3 => array
(
0 => 2,
1 => 3
),
4 => array
(
0 => 3,
1 => 4
),
5 => array
(
0 => 3,
1 => 4
),
);
var_dump( array_values(unique_arr( $arr )) );
去重函数可参考: >
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)