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感谢您的指点。答案很仓促。已修复。