2011-06-10 112 views
1

好吧,我仍在挣扎着我的数组......我创建了一个二维数组并保存到一个会话中以在另一个页面上获得结果:$ _SESSION ['myARRAY']输出二维数组

print_r($_SESSION['myARRAY']); 

// will output: 
Array ([Car] => Array ([0] => 1 [1] => 9 [2] => 0) 
     [Truck] => Array ([0] => 2 [1] => 10 [2] => 0) 
     [Bus] => Array ([0] => 1 [1] => 8 [2] => 2)) 

现在我需要将数据输出到以下格式:

$xls->addRow(Array("Car",1,9,0)); 
$xls->addRow(Array("Truck",2,10,0)); 
$xls->addRow(Array("Bus",1,8,2)); 

我试图做这样的事情:

foreach($_SESSION['myARRAY'] AS $key => $value) { 

    $arr[$key] = $key; 

    foreach($value AS $k => $v) { 
     $arr[$key] = $v; 
    } 

    $xls->addRow($arr[$key]); 
} 

但它并没有真正的工作。我认为我很接近但并不完全在那里......

回答

5

$value已经是一个数组了。现在你只需要预先配置$key即可。你可以使用array_unshift

foreach($_SESSION['myARRAY'] AS $key => $value) { 
    array_unshift($value, $key); 
    $xls->addRow($value); 
} 

当然,如果你做的比这一次更,你应该考虑将合并数组。

+1

'$ value'已经是一个副本,因为它是不一个参考。我没有看到创建第二个副本的重点,特别是如果循环只能这样做。 – Matthew 2011-06-10 16:44:23

+0

@konforce:没错,忘记了......我有点困惑,因为'array_unshift'在原地工作......发生了变化。 – 2011-06-10 16:45:56

1

我可能会使用array_unshift,因为它似乎是一个更合适的方式来解决这个问题,但你也可以不喜欢它:

foreach($_SESSION['myARRAY'] AS $key => $value) { 
    $xls->addRow(array_merge(array($key), $value)); 
}