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); } } 回声“
”; } 递归数组列表($initialArray);
必须使用递归函数执行此操作:

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); } } 回声“
”; } 递归数组列表($initialArray);
如果我这样写的话:
函数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
  • ,所以因为我只需要
  • 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
  • ,所以因为我只需要
  • sam.jpg
  • ,所以我想我可以删除
    $function($value)