Php 在数字列表中查找空白
我有这样一个数组:Php 在数字列表中查找空白,php,arrays,Php,Arrays,我有这样一个数组: Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 10 [4] => 11 [5] => 12 [6] => 13 [7] => 14 [8] => 23 [9] => 24 [10] => 25 ) Array ( [0] => 1 [1] => 2
Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 10
[4] => 11
[5] => 12
[6] => 13
[7] => 14
[8] => 23
[9] => 24
[10] => 25
)
Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => xxx
[4] => 10
[5] => 11
[6] => 12
[7] => 13
[8] => 14
[9] => xxx
[10] => 23
[11] => 24
[12] => 25
)
我想填补这些空白,看起来是这样的:
Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 10
[4] => 11
[5] => 12
[6] => 13
[7] => 14
[8] => 23
[9] => 24
[10] => 25
)
Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => xxx
[4] => 10
[5] => 11
[6] => 12
[7] => 13
[8] => 14
[9] => xxx
[10] => 23
[11] => 24
[12] => 25
)
如果你看第一个数组的值,有1,2,3,然后是间隙,然后是10,11,12,13,14,然后是间隙,然后是23,24,25。。如何通过编程找到这些间隙并在其位置添加新的数组元素
最多有两个间隙
我想不出一个好办法,有什么想法吗?谢谢。我会这样做,没有经过测试,但应该可以工作:)
$oldArray=数组(1,2,3,10,11,12,13,24,25,26,27);
$newArray=array();
对于($i=0;$i一个简单的for
循环,不复制数组,只更改原始数组:
$repl = 'xxx';
for ($i=1; $i<count($array); $i++) {
$valueR = $array[$i];
$valueL = $array[$i-1] === $repl ? $array[$i-2] : $array[$i-1];
if ($valueR > $valueL + 1) {
array_splice($array, $i++, 0, $repl);
}
}
$repl='xxx';
对于($i=1;$i$valueL+1){
阵列拼接($array,$i++,0,$repl);
}
}
$result=array();
如果(计数($oldArray)>0)
{
$result[]=$oldArray[0];
对于($i=1;$i您能解释得更好吗?我添加了一个更好的解释。这似乎在数组末尾添加了一个额外的xxx?检查更新的代码,添加一个检查以确保这不是最后一项。这会删除一些原始数组元素。@Hasan Khan:其中有两个语法错误(缺少$
)。我不明白,count($result)
怎么会在这一点上大于0。@netcoder感谢您的指点。答案很仓促。已修复。