输出php多维数组到html列表

时间:2015-11-11 12:18:49

标签: php html multidimensional-array

我在php脚本中设置了以下数组,我试图按照下面的代码输出它。我试过循环,但我不知道如何让它显示子数组。我希望有人可以帮助我。

PHP数组

$fruits = array();
$fruits[] = array('type' => 'Banana', 'code' => 'ban00');
$fruits[] = array('type' => 'Grape', 'code' => 'grp01');
$fruits[] = array('type' => 'Apple', 'code' => 'apl00',
               array('subtype' => 'Green', 'code' => 'apl00gr'),
               array('subtype' => 'Red', 'code' => 'apl00r')
            );
$fruits[] = array('type' => 'Lemon', 'code' => 'lem00');

所需输出

<ul>
    <li><input type="checkbox" name="fruit" value="Banana"> Banana</li>
    <li><input type="checkbox" name="fruit" value="Grape"> Grape</li>
    <li>Apple
        <ul>
            <li><input type="checkbox" name="fruit" value="Green"> Green</li>
            <li><input type="checkbox" name="fruit" value="Red"> Red</li>
        </ul>
    </li>
    <li><input type="checkbox" name="fruit" value="Lemon"> Lemon</li>
</ul>

3 个答案:

答案 0 :(得分:2)

您可以使用递归功能。请注意,这是一个示例,而不是直接的解决方案,因为我们在这里学习而不是完成工作 - 根据需要进行更改。

function renderList(array $data) {
   $html = '<ul>';
   foreach ($data as $item) {
      $html .= '<li>';
      foreach ($item as $key => $value) {
         if (is_array($value)) {
             $html .= renderList($value);
         } else {
             $html .= $value;
         }
      }
      $html .= '</li>';
   }
   $html .= '</ul>';
   return $html;
}

$data = array();
$data[] = array('A');
$data[] = array('B', array(array('C')));
$data[] = array('D');

echo renderList($data);

输出结果为:

  • A
  • B
    • C
  • d

或者以html格式:

<ul>
    <li>A</li>
    <li>B
        <ul>
            <li>C</li>
        </ul>
    </li>
    <li>D</li>
</ul>

答案 1 :(得分:0)

你需要做这样的事情。我没有试过为你编码,只是试图给你一个想法。我希望你能继续。

echo '<ul>';
    foreach( $fruits as $fruit){
    echo  '<li>' . $fruit . '</li>';
        if( is_array($fruit) ){
             echo  '<ul>';
             foreach( $fruit as $fr ){
                 echo '<li>' . $fr . '</li>';
             }
           echo '</ul>';
    }
        }echo '</ul>';
    }

答案 2 :(得分:0)

<?php

$fruits = array();
$fruits[] = array(
    'type' => 'Banana',
    'code' => 'ban00'
);
$fruits[] = array(
    'type' => 'Grape',
    'code' => 'grp01'
);
$fruits[] = array(
    'type' => 'Apple',
    'code' => 'apl00',
    array(
        'subtype' => 'Green',
        'code' => 'apl00gr'),
    array(
        'subtype' => 'Red',
        'code' => 'apl00r'
    )
);
$fruits[] = array(
    'type' => 'Lemon',
    'code' => 'lem00'
);

iterate($fruits, 'type');

function iterate($fruits, $index)
{
    foreach ($fruits as $fruit) {
        echo "<ul>";
        display($fruit, $index);
        echo "</ul>";
    }
}

function display($data, $index)
{
    echo '<li><input type="checkbox" name="fruit" value="' . $data[$index] . '">' . $data[$index];
    if (!empty($data[0]) && is_array($data[0])) {
        $newSubArray = $data;
        unset($newSubArray['type']);
        unset($newSubArray['code']);
        iterate($newSubArray, 'subtype');
    }
    echo "</li>";
}