2012-09-24 23 views
0

我有以下数组,其中一天的一天按星期几分组。PHP:填充多维数组中的数组,使其具有相同数量的元素

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个

非常感谢

+3

如果您只是修复您的打印而不是数据,该怎么办? – eis

+0

我同意eis – Chris

回答

1

如果你真的坚持对具有它的印刷为一体的评论所说的数据isntead修复,那么你可以在一些使用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); 
} 

array_pad($val, 5, 0);填充阵列0的,直到它到达长5

+0

感谢一吨,工作很棒! – user523129

+0

太棒了!尽管如此,这比“修复打印”的效率要低;-) – Havelock

+1

你不需要循环,只需使用'array_map' – billyonecan

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 
+0

我在做:$ myArray = array_pad($ myArray,5,'');但没有任何变化 – user523129

+0

你需要在子数组 – billyonecan

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); 
+0

上这样做,谢谢,但我怎么知道要填充的数组是1和2?这是一个月的结构,但下个月它可以是阵列3和4的短的。 – user523129

+0

我编辑了我的答案:使用count()和count() - 1得到最后和最后1 – faq