php数组降维
1. 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;}
如果你想保留数组的键值,可以用下面的函数:
//二维数组去掉重复值 并保留键值
function array_unique_fb($array2D){foreach ($array2D as $k=>$v){$v = join(",",$v); //降维,也可以用implode,将一维数组转换为用逗号连接的字符串
$temp[$k] = $v;}$temp = array_unique($temp); //去掉重复的字符串,也就是重复的一维数组
foreach ($temp as $k => $v){$array=explode(",",$v); //再将拆开的数组重新组装
$temp2[$k]["id"] =$array[0];
$temp2[$k]["litpic"] =$array[1];
$temp2[$k]["title"] =$array[2];
$temp2[$k]["address"] =$array[3];
$temp2[$k]["starttime"] =$array[4];
$temp2[$k]["endtime"] =$array[5];
$temp2[$k]["classid"] =$array[6];
大概就这样啦。
以上回答你满意么?
2. php中 有一个数组array("0a","1b","2c","3d","4e","5f","6g","0
$arr = array("0a","1b","2c","3d","4e","5f","6g","0a","2c","4e","6g");
foreach($arr $k=>$v){
if(in_array($v,$arr)){
unset($arr[$k]);
}
}
print_r($arr);
貌似只适合一维
你可以用递归遍历数组向我这样处理应该可以适合多维数组
本人递归不精
3. PHP如何把这些数组 去除重复并且显示,再统计求助!
直接上代码,希望仔细阅读分析
<?php
header("Content-Type:text/html;charset=UTF-8");
$a[]=array('id'=>1,'department'=>'市场');
$a[]=array('id'=>1,'department'=>'市场');
$a[]=array('id'=>1,'department'=>'市场');
$a[]=array('id'=>2,'department'=>'办公室');
$a[]=array('id'=>2,'department'=>'办公室');
$a[]=array('id'=>2,'department'=>'办公室');
$a[]=array('id'=>3,'department'=>'收发室');$out_put=array();
foreach($aas$v){
if(!isset($out_put[$v['id']]['department'])){
$out_put[$v['id']]['department']=$v['department'];
$out_put[$v['id']]['count']=1;
}else{
$out_put[$v['id']]['count']=$out_put[$v['id']]['count']+1;
}
}
//print_r($out_put);
foreach($out_putas$u=>$v){
echo$u.'★'.$v['department'].'★'.$v['count'].'<br/>';
}
4. php怎么把三维数组转化成一维数组
可以使用递归来进行合并,无论数组的维数有多少,都可以进行合并。
<?php
function array_merge_rec(&$array) { // 参数是使用引用传递的
// 定义一个新的数组
$new_array = array ();
// 遍历当前数组的所有元素
foreach ( $array as $item ) {
if (is_array ( $item )) {
// 如果当前数组元素还是数组的话,就递归调用方法进行合并
array_merge_rec ( $item );
// 将得到的一维数组和当前新数组合并
$new_array = array_merge ( $new_array, $item );
} else {
// 如果当前元素不是数组,就添加元素到新数组中
$new_array [] = $item;
}
}
// 修改引用传递进来的数组参数值
$array = $new_array;
}
// 测试用的数组
$my_array = Array (
0 => Array (
0 => Array (
'name' => '角色组管理'
),
1 => Array (
'name' => '角色管理'
),
2 => Array (
'name' => '模块管理'
)
),
1 => Array (
0 => Array (
'name' => '角色管理'
),
1 => Array (
'name' => '模块管理'
),
2 => Array (
'name' => '问题列表'
)
)
);
// 调用函数合并数组为一维数组
array_merge_rec ( $my_array );
// 打印结果
print_r ( $my_array );
?>
5. PHP foreach把二维数组遍历成为一维数组(就是怎么样降维)
如果复重复怎么处理?是制否需要做区分?
如果忽略重复和反向还原,那么直接用array_merge即可
$new_arr = array_merge($arr['1'],$arr[2]);
foreach:
foreach($arras$v=>$k){
foreach($vas$val=>$key){
$new_arr[$key]=$val;
}
}
6. 怎样对php 做二维数组的array
试试下面的代码
$ds=array(
array('id'=>1,'order'=>1),
array('id'=>2,'order'=>3),
array('id'=>1,'order'=>1),
array('id'=>2,'order'=>2),
array('id'=>2,'order'=>3),
array('id'=>3,'order'=>1),
array('id'=>1,'order'=>2),
array('id'=>1,'order'=>2),
array('id'=>3,'order'=>1),
array('id'=>3,'order'=>2),
array('id'=>3,'order'=>3),
);
functionarray_unique_2d($array2D){
$temp=$res=array();
foreach($array2Das$v){
$v=json_encode($v);//降维,将一维数组转换字符串
$temp[]=$v;
}
$temp=array_unique($temp);//去掉重复的字符串,也就是重复的一维数组
foreach($tempas$item){
$res[]=json_decode($item,true);//再将拆开的数组重新组装
}
return$res;
}
array_unique_2d($ds);
7. PHP二维数组如何去掉重复值
PHP数组去除重复项有个内置函数array_unique(),但是php的array_unique函数只适用于一维数组,对多维数组并不适用,以下提供一个二维数组的array_unique函数。
之前写了一篇关于数组去重的文章,但是仅限于一维数组。下面的函数可以用于二维数组:
//二维数组去掉重复值
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;}
如果你想保留数组的键值,可以用下面的函数:
//二维数组去掉重复值 并保留键值
function array_unique_fb($array2D){foreach ($array2D as $k=>$v){$v = join(",",$v); //降维,也可以用implode,将一维数组转换为用逗号连接的字符串
$temp[$k] = $v;}$temp = array_unique($temp); //去掉重复的字符串,也就是重复的一维数组
foreach ($temp as $k => $v){$array=explode(",",$v); //再将拆开的数组重新组装
$temp2[$k]["id"] =$array[0];
$temp2[$k]["litpic"] =$array[1];
$temp2[$k]["title"] =$array[2];
$temp2[$k]["address"] =$array[3];
$temp2[$k]["starttime"] =$array[4];
$temp2[$k]["endtime"] =$array[5];
$temp2[$k]["classid"] =$array[6];
大概就这样啦。
8. matlab二维数组Z字形降维成一位数组
A=[1 2 3 4; 5 6 7 8; 9 10 11 12; 13 14 15 16]
y_img_index=1;
for dim_sum=2:1:8
if(mod(dim_sum,2)==0)
for i=1:1:4
if dim_sum-i<=4 & dim_sum-i>0
imgtemp(y_img_index) = A(i,dim_sum-i)
y_img_index=y_img_index+1;
end
end
else
for i=1:1:4
if dim_sum-i<=4 & dim_sum-i>0
imgtemp(y_img_index) = A(dim_sum-i,i)
y_img_index=y_img_index+1;
end
end
end
end
9. PHP如何去除重复数组,保留不一样的值,而不是一个。
二维数组的去重一般需要先降维,再去重,再重组
你可以参考下面的方法
functionunique_arr($array2D,$stkeep=false,$ndformat=true)
{
//判断是否保留一级数组键(一级数组键可以为非数字)
if($stkeep)$stArr=array_keys($array2D);
//判断是否保留二级数组键(所有二级数组键必须相同)
if($ndformat)$ndArr=array_keys(end($array2D));
//降维,也可以用implode,将一维数组转换为用逗号连接的字符串
foreach($array2Das$v){
$v=join(",",$v);
$temp[]=$v;
}
//去掉重复的字符串,也就是重复的一维数组
$temp=array_unique($temp);
//再将拆开的数组重新组装
foreach($tempas$k=>$v)
{
if($stkeep)$k=$stArr[$k];
if($ndformat)
{
$tempArr=explode(",",$v);
foreach($tempArras$ndkey=>$ndval)$output[$k][$ndArr[$ndkey]]=$ndval;
}
else$output[$k]=explode(",",$v);
}
return$output;
}
10. 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;}
方法二:
//二维数组去掉重复值,并保留键值function array_unique_fb($array2D){ foreach ($array2D as $k=>$v){ $v=join(',',$v); //降维,也可以用implode,将一维数组转换为用逗号连接的字符串 $temp[$k]=$v; } $temp=array_unique($temp); //去掉重复的字符串,也就是重复的一维数组 foreach ($temp as $k => $v){ $array=explode(',',$v); //再将拆开的数组重新组装 //下面的索引根据自己的情况进行修改即可 $temp2[$k]['id'] =$array[0]; $temp2[$k]['title'] =$array[1]; $temp2[$k]['keywords'] =$array[2]; $temp2[$k]['content'] =$array[3]; } return $temp2;}