数组到 php 中具有空白值的另一个数组

Array to another array with blank values in php

嗨,我是新手 php 其实我想转换这个数组

Array(
[0] => 
[1] => 2
[2] => 6
[3] => 7
[4] => 
[5] => 1
[6] => 5
[7] => 6
[8] => 
[9] => 1
[10] => 3
[11] => 5)

我在索引 0,4,8 处有空值
到另一个数组,如

Array([0] => 2,6,7
[1] => 1,5,6
[2] => 1,3,5)

第一种方式 如果你想根据空值分组但它们是随机索引

$new_array = [];

$data = '';
foreach($array as $key=>$arr){
   if($arr == ''){
    if($key >0){
      $new_array[] = trim($data,',');
      $data = '';
    }
  }else{
     $data .= ','.$arr;
  }
}
$new_array[] = trim($data,',');
print_r($new_array);

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

第二种方式 如果你想根据空值进行分组并且它们位于顺序索引处,如 0,4,8,12 ...

$array = array_chunk($array,4);

foreach($array as &$arr){
   $arr = trim(trim(implode(',',$arr),','));
}

print_r($array);

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

第三种方式。 如果您想根据空值进行分组并且它们位于顺序索引处,如 0、4、8, 12...(另一种方法)

$array = array_chunk(array_values(array_filter($array)),3);

foreach($array as &$arr){
   $arr = implode(',',$arr);
}

print_r($array);

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

参考:-

array_chunk()

foreach()

implode()

array_filter()

array_values()

implode()+preg_split()解法:

使用扩展输入数组:

$arr = ['', '', 2, 6, 7, '', '', 1, 5, 6, 8, 9, '', 1, 3, 5, 7, '', 10, 11, ''];
$result = preg_split('/,,+/', trim(implode(',', $arr), ','));

print_r($result);

输出:

Array
(
    [0] => 2,6,7
    [1] => 1,5,6,8,9
    [2] => 1,3,5,7
    [3] => 10,11
)

当遇到''时,只需创建一个子数组并将先前的非空数组附加到结果。 Demo

这只花费 O(n)

$result = [];
$sub = [];
foreach($array as $v){
    if($v != ''){
        $sub[] = $v;
    }else{
        if(count($sub))  // avoid continus ''
            $result[] = $sub;
        $sub = [];
    }
}