我需要检查数组的
如果它们是连续的,那很好,如果不是的话,我需要填写一些数据。

例如

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

在这种情况下,缺少索引 9 13
为了使示例更容易,我只想用数字 999 填充丢失的数据。

但是,我的解决方案有点草率,无法正常工作:
$oldK = 0;
foreach($array as $k=>$entry)
{
    if($oldK !== $k)
    {
        $array[$oldK] = 999;
    }

    $oldK ++;
}

产生以下输出:
Array
(
    [0] => 0
    [1] => 1
    [2] => 8
    [3] => 0
    [4] => 0
    [5] => 0
    [6] => 0
    [7] => 0
    [8] => 0
    [9] => 999
    [10] => 999
    [11] => 999
    [12] => 999
    [13] => 999
    [14] => 0
    [15] => 0
)

有没有一种行之有效的方法?

最佳答案

您可以结合使用 array_replace array_fill :

$keys = array_keys($a);
$result = array_replace(array_fill(0, max($keys), 999), $a);

首先通过array_keys抓取键应该使它适用于任意数量的元素(显然,只要键是数字的)。

演示:https://3v4l.org/Ik71a

10-07 21:43