php數組降維
⑴ php一維數組轉換成二維數組
你是說a[0]的值為1 2 3 4,這個值是什麼類型,空格分隔的字元串嗎,那這樣轉換:
foreach ($a as $k=>$v) $b[$k]=explode(' ',$v);
⑵ 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];
大概就這樣啦。
以上回答你滿意么?
⑶ php 三維數組轉成二維數組
<?php
$k=0;
foreach($helloas$key=>$val){
foreach($val['data']as$key2=>$val2){
$newhello[$k]['uid']=$val['uid'];
$newhello[$k]['title']=$val2['title'];
$newhello[$k]['content']=$val2['content'];
$k++;
}
}
print_r($newhello);
?>
⑷ php一維數組變二維數組
<?php
$a=array('a0'=>'0001','b0'=>'2','a1'=>'0003','b1'=>'6');
$array=change($a,1);
print_r($array);
functionchange($array,$num){
$b=array();
for($i=0;$i<=$num;$i++){
$array=array();
$array['id']=empty($a['a'.$i])?"":$a['a'.$i];
$array['num']=empty($a['b'.$i])?"":$a['b'.$i];
$b[]=$array;
}
return$b;
}
?>
基本實現了你所要的功能
⑸ 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;
}
⑹ PHP 如何將一個一維數組轉成二維數組
例如:
用php遞歸將二維數組轉換成一維數組:
函數原形:array array_multi2single(array)
實現功能:將多維數組的數值存放到一維數組中,不保存Key。
<?php
function array_multi2single($array){
static $result_array=array();
foreach($array as $value){
if(is_array($value)){
array_multi2single($value);
}
else
$result_array[]=$value;
}
return $result_array;
}
$array=array("1"=>array("A","B","C",array("D","E")),"2"=>array("F","G","H","I"));
$array=array_multi2single($array);
foreach($array as $value){
echo "<h5>$value</h5>";
echo "<br>";
}
?>
可用於多維數組.
⑺ 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;
}
}
⑻ 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;}
⑼ PHP一維數組變成二維數組
<?php
$asr =array("2","3","4","5");
$new_array = array_chunk($asr,1); //將原數組按每個一組分成二維數組 $new_array[0][0]=2 $new_array[1][0]=3
for($i=0;$i<4;$i++){ //循環賦值
$new_array[$i][1]= $new_array[$i][0]*2;
echo $new_array[$i][1]." ";
}
?>
看看這樣是你想要的不
⑽ 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 );
?>