我有一个多维array
,其中包含一堆类别。在这个例子中,我填写了服装类别。
$categories = array(
'Fashion' => array(
'Shirts' => array(
'Sleeve' => array(
'Short sleeve',
'Long sleeve'
),
'Fit' => array(
'Slim fit',
'Regular fit'
),
'Blouse'
),
'Jeans' => array(
'Super skinny',
'Slim',
'Straight cut',
'Loose',
'Boot cut / flare'
)
),
);
我希望能够像这样打印整个array
:
--Fashion
----Shirts
-------Sleeve
---------Short sleeve
---------Long sleeve
-------Fit
---------Slim fit
---------Regular fit
----Blouse
我想我需要使用某种递归函数。
我该怎么做?
答案 0 :(得分:6)
我试图使用你给定的数组并得到这个:
$categories = array(
'Fashion' => array(
'Shirts' => array(
'Sleeve' => array(
'Short sleeve',
'Long sleeve'
),
'Fit' => array(
'Slim fit',
'Regular fit'
),
'Blouse'
),
'Jeans' => array(
'Super skinny',
'Slim',
'Straight cut',
'Loose',
'Boot cut / flare'
)
),
);
showCategories($categories);
function showCategories($cats,$depth=1) { // change depth to 0 to remove the first two -
if(!is_array($cats))
return false;
foreach($cats as$key=>$val) {
echo str_repeat("-",$depth*2).(is_string($key)?$key:$val).'<br>'; // updated this line so no warning or notice will get fired
if(is_array($val)) {
$depth++;
showCategories($val,$depth);
$depth--;
}
}
}
将导致
--Fashion
----Shirts
------Sleeve
--------Short sleeve
--------Long sleeve
------Fit
--------Slim fit
--------Regular fit
------Blouse
----Jeans
------Super skinny
------Slim
------Straight cut
------Loose
------Boot cut / flare
答案 1 :(得分:1)
递归函数将为您提供答案:
function printAll($a) {
if (!is_array($a)) {
echo $a, ' ';
return;
}
foreach($a as $k => $value) {
printAll($k);
printAll($value);
}
}
答案 2 :(得分:0)
试试这个
<?php
function print_r_recursive($array){
if(!is_array($array)){
echo $array;
return; }
foreach ($array as $value) {
if(is_array($value)){
print_r_recursive($value);
}
}
}
?>