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循环生成最终数组。
答案 0 :(得分:0)
要回答你的问题,循环遍历数组并根据条件递增索引(如果它只有1个字符),然后将值连接到数组上。
<?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',
)