划分数组并创建新数组

时间:2017-12-30 07:02:41

标签: php

我有这样的数组

array (size=6)
  0 => string '2      16     10     4      0      0      0      0      0'     
  1 => string '0      0      0      4' 
  2 => string '2      15     8      6      0      0      0      0      0' 
  3 => string '0      0      0      3' 
  4 => string '3      18     12     5      0      0      0      0      0' 
  5 => string '0      0      0      2'

我想分割数组并创建一个新的数组,如

array1 (size = 1)
0 => '2 16 10 4 0 0 0 0 0 0 0 0 0 4'

array2 (size = 1)
0 => '2 15 8 6 0 0 0 0 0 0 0 0 3'

array3 (size = 2)
0 => '3 18 12 5 0 0 0 0 0 0 0 0 2'

array_chunk()运行正常。但它不支持我的数组

3 个答案:

答案 0 :(得分:1)

使用array_chunk($array_name, 2)

以上将返回一个多维数组。

答案 1 :(得分:0)

您可以通过array_chunk()foreach()

来完成
$new_array = array_chunk($original_array,2);

$final_array = [];

foreach($new_array as $arr){
 $final_array[] = $arr[0].' '.$arr[1];
}

print_r($final_array);

输出: - https://eval.in/928261

注意: - 如果您想删除字符串之间的额外空格,请使用preg_replace()

$new_array = array_chunk($original_array,2);

$final_array = [];

foreach($new_array as $arr){
 $final_array[] = preg_replace('/\s+/', ' ', $arr[0]).' '.preg_replace('/\s+/', ' ', $arr[1]);
}

print_r($final_array);

输出: - https://eval.in/928265

答案 2 :(得分:0)

方法#1:(Demo

$prepped_copy=preg_replace('/\s+/',' ',$array);  // reduce spacing throughout entire array
while($prepped_copy){  // iterate while there are any elements in the array
    $result[]=implode(' ',array_splice($prepped_copy,0,2));  // concat 2 elements at a time
}

var_export($result);

方法#2(Demo

$pairs=array_chunk(preg_replace('/\s+/',' ',$array),2);  // reduce spacing and pair elements
foreach($pairs as $pair){
    $result[]="{$pair[0]} {$pair[1]}";  // concat 2 elements at a time
}

var_export($result);

两个输出:

array (
  0 => '2 16 10 4 0 0 0 0 0 0 0 0 4',
  1 => '2 15 8 6 0 0 0 0 0 0 0 0 3',
  2 => '3 18 12 5 0 0 0 0 0 0 0 0 2',
)

令我惊讶的是,方法#1实际上使用小样本数据集的速度略快(但不是很明显)。