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;}