先設定乙個陣列:
$arr=[
'a'=
>
['b'
=>
['c'
,'d'],
'e'=
>
['f'
=>
['g'],
'h'=
>
'i']],
'm'=
>
'n']
;
第一種方法:遞迴
function
toonearray
($array
)else
}return
$res_arr;}
echo'';
print_r
(toonearray
($arr))
;
第二種方法:array_walk_recursice()
$res_arr=[
];array_walk_recursive
($arr
,function($k
));echo'';
print_r
($res_arr
);
以上兩種方法得到的結果是一樣的:
array([
0]=> c
[1]=> d
[2]=> g
[3]=> i
[4]=> n
)
至於第二種方法,還有一種寫法,如下:
$res_arr=[
];array_walk_recursive
($arr
,function($k
)use(&
$res_arr))
;echo'';
print_r
($res_arr
);
會得到一樣的效果。但是一點要注意的是匿名函式中use()
中的陣列要加『&』
符號,&
是引用的意思。還有一些內建函式也是可以用的,比如:array_walk(),array_map(),array_reduce()
其他
1 array_reduce函式法
2 array_walk_recursive函式法
3 array_map函式法
假設有下面乙個二維陣列:
$user
=array
('0'
=>
array
('id'
=>
100,
'username'
=>
'a1'),
'1'=
>
array
('id'
=>
101,
'username'
=>
'a2'),
'2'=
>
array
('id'
=>
102,
'username'
=>
'a3'),
'3'=
>
array
('id'
=>
103,
'username'
=>
'a4'),
'4'=
>
array
('id'
=>
104,
'username'
=>
'a5'),
);
現在要轉換成一維陣列,有兩種情況:
一種是將指定列轉換成一維陣列
第二種情況,就是把所有的值都轉換成一維陣列,而且鍵值相同不會被覆蓋,轉換後的一維陣列是這樣的:
$result
=array
(100
,'a1', 101
,'a2'
,102
,'a3'
,103
,'a4'
,104
,'a5'
);
主要有下面幾個方法。
1 array_reduce函式法
用array_reduce()函式是較為快捷的方法:
$result
=array_reduce
($user
,function
($result
,$value),
array()
)
因為array_merge函式會把相同字串鍵名的陣列覆蓋合併,所以必須先用array_value取出值後再合併。
如果第二維是數字鍵名,如:
$user
=array
('a'
=>
array
(100
,'a1'),
'b'=
>
array
(101
,'a2'),
'c'=
>
array
(102
,'a3'),
'd'=
>
array
(103
,'a4'),
'e'=
>
array
(104
,'a5'),
);
那麼直接這樣就可以了:
$result
=array_reduce
($user
,'array_merge'
,array()
)
2 array_walk_recursive函式法
用array_walk_recursive()函式就非常靈活,可以把任意維度的陣列轉換成一維陣列。
$result=[
];array_walk_recursive
($user
,function
($value
)use(&
$result))
;
例如,下面這個多維陣列:
$user4
=array
('a'
=>
array
(100
,'a1'),
'b'=
>
array
(101
,'a2'),
'c'=
>
array
('d'
=>
array
(102
,'a3'),
'e'=
>
array
(103
,'a4'),
),);
用這個方法後就變成:
$result
=array
(100
,'a1', 101
,'a2'
,102
,'a3'
,103
,'a4'
);
3 array_map函式法
用array_map和array_reduce函式的方法類似,如下:
$result=[
];array_map
(function
($value
)use(&
$result),
$user
);
只是需要多宣告乙個空的$result陣列。
另外,也可以用array_walk的方法,和foreach迴圈的方法,原理和上面一樣。
一維陣列轉為二維陣列
真是應該補一補資料結構,真高這個程式!do while not eof 1 連續讀入乙個txt檔案到inputdata中 line input 1,inputdata if inputdata then 分割為一維陣列splitdata splitdata split inputdata,end i...
PHP二維陣列(或任意維陣列)轉換成一維陣列的方法
目錄 假設有下面乙個二維陣列 arr array 0 array id 100,username a1 1 array id 101,username a2 2 array id 102,username a3 3 array id 103,username a4 4 array id 104,us...
mysql二維轉一維 二維陣列轉為一維陣列
1.很多時候會遇到二維陣列,轉為一維陣列的時候會很苦惱,尤其是剛剛接觸php的phper。如下 將 arr轉化為一維陣列 arr array array uuid aaaaa array uuid bbbbb array uuid ccccc array uuid sssss array uuid ...