介紹幾種常見的拆分數組的方法:
1、array_slice
2、array_splice
3、array_chunk
4、foreach
逐個介紹:
1、array_slice
函數在數組中根據條件取出一段值,並返回。
註釋:如果數組有字符串鍵,所返回的數組將保留鍵名。
語法:
array_slice(array,start,length,preserve)
直接上例子:
$a = [
'a' => 1,
1 => 2,
'c' => 3,
2 => 4,
'e' => 5,
3 => 6
];
$b = array_slice($a,3); // 從索引3開始截取,索引從0開始,並且鍵名重置
$c = array_slice($a,3, 2); // 從索引3開始截取,截取長度爲2,並且鍵名重置
$d = array_slice($a, 2, 2, true); // 從索引3開始截取,截取長度爲2,並且保留原數組的鍵名
print_r($b);
print_r($c);
print_r($d);
結果:
Array
(
[0] => 4
[e] => 5
[1] => 6
)
Array
(
[0] => 4
[e] => 5
)
Array
(
[c] => 3
[2] => 4
)
2、array_splice
函數從數組中移除選定的元素,並用新元素取代它。該函數也將返回包含被移除元素的數組。
註釋:不保留被替換數組中的鍵名,被保留下的元素的鍵名也會被重置(字符串命名的鍵名會被保留)
語法:
array_splice(array,start,length,array)
例子:
$a = [
'a' => 1,
1 => 2,
'c' => 3,
2 => 4,
'e' => 5,
3 => 6
];
$b = [
'aa' => 'apple',
'bb' => 'banana',
'cc' => 'orange'
];
$c = $d = $a;
array_splice($a, 2); // 從索引2位置移除後面的所有元素
print_r($a);
array_splice($c, 3, 2); // 從索引3位置開始移除個數爲2
print_r($c);
array_splice($d, 2, 2, $b); // 從索引2位置移除2個元素並用數組b的數據替代被移除的2個元素的位置
print_r($d);
結果:
Array
(
[a] => 1
[0] => 2
)
Array
(
[a] => 1
[0] => 2
[c] => 3
[1] => 6
)
Array
(
[a] => 1
[0] => 2
[1] => apple
[2] => banana
[3] => orange
[e] => 5
[4] => 6
)
3、array_chunk
函數把數組分割爲新的數組塊
註釋:默認是重置鍵名的,可選參數 preserve_key 是一個布爾值,它指定新數組的元素是否有和原數組相同的鍵(用於關聯數組),還是從 0 開始的新數字鍵(用於索引數組)。默認是分配新的鍵。這裏布爾值但是其實用0或1或者大於1的數字也是可以替代這裏面的布爾值的
語法:
array_chunk(array,size,preserve_key);
例子:
$a = [
'a' => 1,
1 => 2,
'c' => 3,
2 => 4,
'e' => 5,
3 => 6
];
$b = array_chunk($a,4); // 以4個元素爲一組進行拆分數組
print_r($b);
$c = array_chunk($a, 4, true); // 以4個元素爲一組進行拆分數組並且保留原數組的鍵名
print_r($c);
$d = array_chunk($a, 4, 1); // 以4個元素爲一組進行拆分數組並且保留原數組的鍵名
print_r($d);
結果:
Array
(
[0] => Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 4
)
[1] => Array
(
[0] => 5
[1] => 6
)
)
Array
(
[0] => Array
(
[a] => 1
[1] => 2
[c] => 3
[2] => 4
)
[1] => Array
(
[e] => 5
[3] => 6
)
)
Array
(
[0] => Array
(
[a] => 1
[1] => 2
[c] => 3
[2] => 4
)
[1] => Array
(
[e] => 5
[3] => 6
)
)
foreach我就不介紹了