我在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>
答案 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);
输出结果为:
或者以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>";
}