PHP 將任意維數陣列轉為一維陣列

2021-10-01 07:20:33 字數 4005 閱讀 1739

先設定乙個陣列:

$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 ...