0

我有以下数组,其中一个月的天数按一周中的天数分组。

Array
(
    [3] => Array
        (
            [0] => 1
            [1] => 8
            [2] => 15
            [3] => 22
            [4] => 29
        )

    [4] => Array
        (
            [0] => 2
            [1] => 9
            [2] => 16
            [3] => 23
            [4] => 30
        )

    [5] => Array
        (
            [0] => 3
            [1] => 10
            [2] => 17
            [3] => 24
            [4] => 31
        )

    [1] => Array
        (
            [0] => 6
            [1] => 13
            [2] => 20
            [3] => 27
        )

    [2] => Array
        (
            [0] => 7
            [1] => 14
            [2] => 21
            [3] => 28
        )

)

如您所见,所有数组都有五个元素,但最后两个有四个。

如何填充最后两个数组,以便它们也可以有五个元素?

我想用空值填充它们,所以当我打印一个 html 表时,它不会在第 31 天之后打印任何内容

非常感谢

4

3 回答 3

1

如果您真的坚持要修复数据而不是像评论建议的那样将其用于打印,那么您可以array_pad像这样使用:

$days = array(....) // that's your original array
foreach($days as $key => $val){
    if(count($val)<5)
        $days[$key] = array_pad($val, 5, 0);
}

Wherearray_pad($val, 5, 0);用 's 填充数组,0直到达到 length 5

于 2012-09-24T15:07:13.067 回答
0

您可以使用array_pad()来执行此操作。

例子

$data = array(
    array(1, 2, 3, 4, 5),
    array(3, 4, 5),
    array(4, 9, 10, 11),
    array(1, 3, 5, 7, 8)
);

var_dump(array_map(function($val) { 
  return array_pad($val, 5, ''); 
}, $data));

输出

array
  0 => 
    array
      0 => int 1
      1 => int 2
      2 => int 3
      3 => int 4
      4 => int 5
  1 => 
    array
      0 => int 3
      1 => int 4
      2 => int 5
      3 => string '' (length=0)
      4 => string '' (length=0)
  2 => 
    array
      0 => int 4
      1 => int 9
      2 => int 10
      3 => int 11
      4 => string '' (length=0)
  3 => 
    array
      0 => int 1
      1 => int 3
      2 => int 5
      3 => int 7
      4 => int 8
于 2012-09-24T15:01:48.987 回答
0

将值添加到 multid。使用 array_push 的数组是这样的:

array_push ($array[1]['something'], "value"); 

在你的例子中:

array_push ($array[count($array)][4], 99); 
array_push ($array[count($array)-1][4], 99); 
于 2012-09-24T15:03:01.683 回答