Php 如何将多维数组转换为ul列表?
这是我的阵列:Php 如何将多维数组转换为ul列表?,php,arrays,multidimensional-array,Php,Arrays,Multidimensional Array,这是我的阵列: array(1) { ["farm"]=> array(1) { ["animals"]=> array(1) { [horses]=> array(4) { ["fred.jpg"]=> string(63) "farm/animals/horses/fred.jpg" ["sam.jpg"]=> string(74) "farm/ani
array(1) {
["farm"]=>
array(1) {
["animals"]=>
array(1) {
[horses]=>
array(4) {
["fred.jpg"]=>
string(63) "farm/animals/horses/fred.jpg"
["sam.jpg"]=>
string(74) "farm/animals/horses/sam.jpg"
["alan.jpg"]=>
string(64) "farm/animals/horses/alan.jpg"
["john.jpg"]=>
string(63) "farm/animals/horses/john.jpg"
}
}
}
}
我想将其转换为ul列表,因此结果应为:
<ul>
<li>farm
<ul>
<li>animals
<ul>
<li>horses
<ul>
<li>fred.jpg</li>
<li>sam.jpg</li>
<li>alan.jpg</li>
<li>john.jpg</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
- 农场
- 动物
- 马
- fred.jpg
- sam.jpg
- 艾伦.jpg
- 约翰.jpg
我使用了这个函数:
function array2ul($array) {
$output = '<ul>';
foreach ($array as $key => $value) {
$function = is_array($value) ? __FUNCTION__ : 'htmlspecialchars';
$output .= '<li>' . $key . '</li>';
}
return $output . '</ul>';
}
function recursiveArrayToList(Array $array = array())
{
echo '<ul>';
foreach ($array as $key => $value) {
echo '<li>' . $key . '</li>';
if (is_array($value)) {
recursiveArrayToList($value);
}
}
echo '</ul>';
}
recursiveArrayToList($initialArray);
函数数组2ul($array){
$output='';
foreach($key=>$value的数组){
$function=is_数组($value)?\u函数:'htmlspecialchars';
$output.='- '.$key.
';
}
返回$output。“
”;
}
但结果是:
<ul>
<li>farm
<ul>
<li>animals
<ul>
<li>horses
<ul>
<li>fred.jpg</li>
<li>farm/animals/horses/sam.jpg</li>
<li>farm/animals/horses/alan.jpg</li>
<li>farm/animals/horses/john.jpg</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
- 农场
- 动物
- 马
- fred.jpg
- 农场/动物/马/sam.jpg
- 农场/动物/马/alan.jpg
- 农场/动物/马/john.jpg
必须使用递归函数执行此操作:
function array2ul($array) {
$output = '<ul>';
foreach ($array as $key => $value) {
$function = is_array($value) ? __FUNCTION__ : 'htmlspecialchars';
$output .= '<li>' . $key . '</li>';
}
return $output . '</ul>';
}
function recursiveArrayToList(Array $array = array())
{
echo '<ul>';
foreach ($array as $key => $value) {
echo '<li>' . $key . '</li>';
if (is_array($value)) {
recursiveArrayToList($value);
}
}
echo '</ul>';
}
recursiveArrayToList($initialArray);
函数递归ArrayList(数组$Array=Array())
{
回声“- ”;
foreach($key=>$value的数组){
回显“
- ”.$key.“ ”; if(是_数组($value)){ 递归ArrayList($value); } } 回声“
必须使用递归函数执行此操作:
function array2ul($array) {
$output = '<ul>';
foreach ($array as $key => $value) {
$function = is_array($value) ? __FUNCTION__ : 'htmlspecialchars';
$output .= '<li>' . $key . '</li>';
}
return $output . '</ul>';
}
function recursiveArrayToList(Array $array = array())
{
echo '<ul>';
foreach ($array as $key => $value) {
echo '<li>' . $key . '</li>';
if (is_array($value)) {
recursiveArrayToList($value);
}
}
echo '</ul>';
}
recursiveArrayToList($initialArray);
函数递归ArrayList(数组$Array=Array())
{
回声“- ”;
foreach($key=>$value的数组){
回显“
- ”.$key.“ ”; if(是_数组($value)){ 递归ArrayList($value); } } 回声“
如果我这样写的话:
函数array2ul($array){$output='”;foreach($key=>$value){$function=is_array($value)?\uu函数:'htmlspecialchars';$output.='- '.$key.$function($value)。
'}返回$output.
然后它是这样的fred.jpgfarm/anies/horses/fred.jpg sam.jpgfarm/anies/horses/sam.jpg
等等,你从不调用递归函数(在循环内部)@杰夫:是的,是我写的,是“李”$钥匙$函数($value)。'`但我的结果是sam.jpgfarm/anies/horses/sam.jpg
,所以因为我只需要$function($value)
:function array2ul($array){$output='- $value){$function=is\u array($value)?uuu FUNCTION uuuu:'htmlspecialchars';$output.='
- '.$key.$FUNCTION($value)。 '}返回$output.
sam.jpgfarm/anies/horses/sam.jpg
,所以你永远不会调用递归函数(在循环内部)@杰夫:是的,是我写的,是“李”$钥匙$函数($value)。'`但是我的结果是sam.jpgfarm/anies/horses/sam.jpg
,所以因为我只需要$function($value)