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


how can i use foreach methord in this piece of code

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

<?php
$shop=array                                             // main array
(
"laptop"=>array
(
"conpaq",
"IBM",
"DELL",
"Lenovo"
),
"printer"=>array
(
"canon",
"Hp"
),
"Tabs"=>array
(
"Hp",
"Dell",
"deny"
)
);  

这是一个使用递归的简单列表,它也有选项卡,以便在有新的数组组时更清晰。

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

$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);

问是否有你不明白的地方。

2 个级别且无递归。回避会更好,但这将起作用。

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