我需要检查数组的键。
如果它们是连续的,那很好,如果不是的话,我需要填写一些数据。
例如
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