PHP:填写';差距';排列

PHP:填写';差距';排列,php,arrays,merge,Php,Arrays,Merge,我有一个php数组(通过表单中的复选框值获得——正如您所知,复选框只有在未设置时才会显示在_POST变量中) 我需要一种方法来“填补”0-5之间的差距。上面看起来像(用“-1”填充空格)。我尝试用一个用“-1”填充的数组array\u merge(),但没有成功 Array ( [0] => -1 [1] => -1 [2] => 0,2 [3] => 0,3 [4] => -1 [5] => -1 ) 我想我

我有一个php数组(通过表单中的复选框值获得——正如您所知,复选框只有在未设置时才会显示在_POST变量中)

我需要一种方法来“填补”0-5之间的差距。上面看起来像(用“-1”填充空格)。我尝试用一个用“-1”填充的数组
array\u merge()
,但没有成功

Array
(
    [0] => -1
    [1] => -1
    [2] => 0,2
    [3] => 0,3
    [4] => -1
    [5] => -1
)
我想我可能在试图解决的问题上走错了路,但我在这个解决方案上花了太多的时间,以至于无法回头——我相信你们大多数人都熟悉这种感觉(!)


干杯!

为什么不循环进行呢

for ($i = 0; $i <= 5; $i++)
{
    if (!isset($array[$i]))
    {
        $array[$i] = -1;
    }
}

对于($i=0;$i如果数组是可变长度的,则希望使用:

  for ($i = 0; $i <= sizeof($array); $i++)
    {
        if (!isset($array[$i]))
        {
            $array[$i] = -1;
        }
    }

for($i=0;$iarray\u merge不起作用,但“+”起作用

$a = array(2 => 22, 3 => 33);
$b = $a + array_fill(0, 6, -1);

但是,键顺序是错误的,因此您可能希望对其进行排序。

这无法满足OPs的需要。在他的示例中,数组必须有个值,但他希望用5个值填充它。在您的代码中,只设置前两个元素。实际上,我认为这在您的情况下不起作用。但它可能对其他人有用。谢谢stereofrog,我最后还是这么做了(下面的代码是为任何使用_POST进行类似操作的人编写的。仅供将来参考,有人知道这与上面的foreach之间哪个处理器最友好吗?理论上,循环应该更快,但可以忽略不计。)so@aboved在这种情况下,你不应该关心处理器。5次甚至100次迭代都不会让处理器工作太多k、 虽然你根本不需要这个循环。
$a = array(2 => 22, 3 => 33);
$b = $a + array_fill(0, 6, -1);