PHP:根据单元格中的元素数量创建新数组,并使用> 1元素创建连续顺序单元格

时间:2017-12-24 00:31:12

标签: php arrays

PHP问题

ArrayAlpha:

        [0] => A
        [1] => B C
        [2] => D
        [3] => E F
        [4] => G H
        [5] => I J

新数组应为:

  [0] B C
  [1] E F G H I J

条件1 :如果ArrayAlpha单元格包含两个或多个单独的元素,那么它将进入新数组。

条件2 :连接(带空格)带有下一个单元格的单元格,以及之后的单元格等,如果下一个单元格有2个或更多单独的元素

有一种简单的方法吗?

目前看起来我需要创建另一个数组,计算ArrayAlpha每个单元格中的元素并将答案放入另一个数组中。创建另一个数组并将值为1的任何单元格的索引放入最新数组中,然后使用多个for循环生成最终数组。

2 个答案:

答案 0 :(得分:0)

要回答你的问题,循环遍历数组并根据条件递增索引(如果它只有1个字符),然后将值连接到数组上。

例如:https://3v4l.org/kDtVF

<?php
$array = [
    0 => 'A',
    1 => 'B C',
    2 => 'D',
    3 => 'E F',
    4 => 'G H',
    5 => 'I J'
];

$new = [];
$index = 0;
foreach ($array as $value) {
    if (strlen($value) == 1) {
        $index++;
    } elseif (strlen($value) > 1) {
        if (!isset($new[$index])) {
            $new[$index] = null;
        }
        $new[$index] .= $value.' ';
    }
}
$new = array_values($new); // if 0, 1 index is important

print_r($new);

/*
Array
(
    [0] => B C 
    [1] => E F G H I J 
)
*/

答案 1 :(得分:0)

你可以

$a = ['A','B C','D','E F','G H','I J'];
$i = 0;

array_walk( $a, function($item) use (&$b,&$i){
    if( strlen($item) > 1){
        if(!isset($b[$i])){
            $b[$i] = $item;
        }else{
             $b[$i] .= " $item";
        }
    }else{
       ++$i; 
    }
});

var_export($b);

试试online

OUPUTS:

Array
(
   1 => 'B C',
   2 => 'E F G H I J',
)