PHP显示多维数组

时间:2011-10-18 14:12:40

标签: php arrays multidimensional-array

我有这个类似的数组:

$suppliers = array(
  'Utility Warehouse' => array('Gas' => array(0,0), 'Electricty' => array(0,0)),
  'British Gas' => array('Gas' => array(93,124), 'Electricty' => array(93,124)),
  'Eon' => array('Gas' => array(93,124), 'Electricty' => array(93,124))
);

如何显示如下信息

Utility Warehouse
Gas: 0-0 Electricity 0-0

British Gas
Gas: 93-134 Electricity: 93-134

Eon
Gas: 93-124 Electricity: 93-134

您可以看到显示的数据如何与数组中的数据相对应。我试过这个:

foreach($suppliers as $a){
    echo $a[0];
}

但这没有任何作用。困惑!

更新需要说谢谢你们,我为自己缺乏知识而道歉。我之前从未使用过嵌套数组,在我发布此处之前,我确实在寻找解决方案。

5 个答案:

答案 0 :(得分:5)

<?php 

foreach($suppliers as $supplier => $category) {
    echo $supplier . '<br />';
    foreach($category as $cat_name => $values_arr) {
        echo $cat_name . ': ' . implode('-', $values_arr) . '<br /><br />';
    }
}

?>

答案 1 :(得分:1)

你可以尝试:

foreach($suppliers as $name => $value) {
    echo $name . "<br />";
    foreach($value as $a => $price) {
        echo $a .': '. $price[0].'-'.$price[1];
    }
    echo "<br /><br />";
}

答案 2 :(得分:1)

实现你想要的代码将遵循,但我建议你更多地了解你的PHP技能,因为这是一项微不足道的任务。

foreach($suppliers as $name => $data){
    echo $name . '<br/>';
    foreach($data as $utility => $value){
        echo $utility . ': ' . $value[0] . '-' . $value[1] . ' ';
    }
    echo '<br/><br/>';
}

答案 3 :(得分:1)

与其他人一样的答案(我太慢了)。这是一个有效的例子:http://codepad.org/PDPEjAGJ

此外,回答这个问题的每个人,包括我在内,都犯了舀勺罪。啊,好吧,我会为积分做点什么! :P

答案 4 :(得分:0)

这是一个可以使用的简单递归函数。我找到了它并对其进行了修改,以用于演示目的。原始来源在评论中。

function print_a($array, $level=0){
  # source: https://thisinterestsme.com/php-using-recursion-print-values-multidimensional-array/
  foreach($array as $key => $value){
    # If $value is an array.
    if(is_array($value)){
      echo str_repeat("-", $level). "<br>{$key}<br>\r\n";
      # We need to loop through it.
      print_a($value, $level + 1);
    } else{
      # It is not an array, so print it out.
      echo str_repeat("-", $level) . "{$key}: {$value}<br>\r\n";
    }
  }
} # END FUNCTION print_a