所以,我还在学习PHP,我想自定义数组的结构,所以他们不是静态的。但我遇到了一个问题。我已经设法写出每个数组里面有一个数组,但现在我很难找到一种方法来写出那些里面没有数组的数组,而不是得到0-s和1-s,而不是数组元素的实际名称。
我基本上需要一些关于如何使它正常工作的建议,如果你能告诉我一个更有效的方法来写所有的东西,同时解决问题,我不介意。
<?php
$food = array(
'Healthy'=>array( 'Salad'=> array('Fruit Salad','Tropical Salad'),
'Vegetables'=>array('Carrot','Cucumber'),
'Pasta'),
'Unhealthy'=>array('Pizza','Ice Cream')
);
foreach ($food as $type=>$food_types) {
echo '<b>'.$type.'</b>'.'<br>';
if (is_array($food_types)) {
foreach($food_types as $type_names=>$fruits) {
if (isset($type_names) && !empty($type_names) && is_array($fruits)) {
echo $type_names.'<br>';
foreach ($fruits as $name_of_fruits) {
echo '<i>'.$name_of_fruits.'</i>'.'<br>';
}
}
}
} else {
echo $food_types;
}
}
?>
* * * * *更新感谢celeriko的评论,我发现了这个问题,作为PHP的新手,我真的不知道"Healthy Food"的类型不是数组,实际上是大"Healthy Food"数组的第一个索引,因为其他两个是数组,不算作实际的索引。
这里是修复代码,再次感谢cerleriko !
<?php
$food = array(
'Healthy'=>array( 'Salad'=> array('Fruit Salad','Tropical Salad'),
'Vegetables'=>array('Carrot','Cucumber'),
'Pasta'),
'Unhealthy'=>array('Pizza','Ice Cream')
);
foreach ($food as $type=>$food_types) {
echo '<b>'.$type.'</b>'.'<br>';
if (is_array($food_types)) {
foreach($food_types as $type_names=>$fruits) {
if (isset($type_names) && !empty($type_names) && is_array($fruits)) {
echo $type_names.'<br>';
foreach ($fruits as $name_of_fruits) {
echo '<i>'.$name_of_fruits.'</i>'.'<br>';
}
} else {
echo $fruits.'<br>'; /* Here I had to enter this line and everything works fine! */
}
}
} else {
echo $food_types;
}
}
?>
很高兴你得到了它的修复,但对于问题"输出多维数组更动态的方式",这里是一个递归的。它将level-X
类设置为div,您可以为其设置样式:
function print_it($array) {
static $level = 1;
foreach($array as $k => $v) {
if(!is_numeric($k)) {
echo '<div class="level-'.$level.'">'.$k.'</div>'.PHP_EOL;
}
if(is_array($v)) {
$level++;
print_it($v);
$level--;
} else {
echo '<div class="level-'.$level.'">'.$v.'</div>'.PHP_EOL;
}
}
}
print_it($food);