我如何在这段代码中使用foreach方法

时间:2015-03-09 16:16:34

标签: php

如何使用foreach打印整个多维数组?

<?php

$shop=array                                             // main array
(
"laptop"=>array

(
"conpaq",
"IBM",
"DELL",
"Lenovo"
),

"printer"=>array

(
"canon",
"Hp"
),

"Tabs"=>array
(
"Hp",
"Dell",
"deny"
)

);  

2 个答案:

答案 0 :(得分:1)

这是一个使用递归的简单列表,它还有标签,以便在有新的数组时更清晰。

请尝试并根据您的代码进行调整。

$shop = array(
        'computers' => array(
                'dell' => array(
                        'i7' => array(
                                'model1' => 'Model 1',
                                'model2' => 'Model 2',
                        ),
                        'i5' => 'Model 1'
                ),
                'hp' => array(
                        'model1' => 'Model 1'
                )
        ),
        'printers' => array(
            'Epson' => 'Model 1'
        )
);


function printProducts($products, $tabsCount = 0){
    $result = ''; $tabs = '';
    for($i = 0; $i < $tabsCount; $i++){ $tabs .= '&emsp;'; }
    foreach($products AS $index=>$product){
        if(is_array($product)){
            $result .= $tabs.$index.'<br>';
            $result .= printProducts($product, $tabsCount+1);
        }else{
            $result .= $tabs.$product.'<br>';
        }
    }
    return $result;
}

echo printProducts($shop);

询问您是否有不明白的事情。

答案 1 :(得分:-1)

2级,没有递归。递归会更好,但这会有效。

foreach($shop as $value) { 
  if (is_array($value)) {
    foreach($shop as $value) { 
      echo "$value<br />";
    }
  } else {
    echo "$value<br />";
  }
} 
?>