在php中将多维数组输出为3列div和ul li
这里有一个数组:我试图将数组拆分为3列div,第一个数组应该包装成h3标记,然后其他数组应该显示在无序列表中在php中将多维数组输出为3列div和ul li,php,html,multidimensional-array,foreach,while-loop,Php,Html,Multidimensional Array,Foreach,While Loop,这里有一个数组:我试图将数组拆分为3列div,第一个数组应该包装成h3标记,然后其他数组应该显示在无序列表中 Array ( [0] => Array ( [label_01] => heading 01: [label_02] => heading 02: [label_03] => heading 03: ) [1] => Array
Array
(
[0] => Array
(
[label_01] => heading 01:
[label_02] => heading 02:
[label_03] => heading 03:
)
[1] => Array
(
[label_01] => item 01
[label_02] => item 02
[label_03] => item 03
)
[2] => Array
(
[label_01] => item 001
[label_02] => item 002
[label_03] => item 003
)
)
它应该是这样输出的
<div class="row">
<div class="col-lg-4">
<h3 class="text-primary text-center">heading 01:</h3>
<ul class="list-box">
<li class="bg-primary text-white">item 01</li>
<li class="bg-primary text-white">item 001</li>
</ul>
</div>
<div class="col-lg-4">
<h3 class="text-warning text-center">heading 02:</h3>
<ul class="list-box">
<li class="bg-warning text-white">item 02</li>
<li class="bg-warning text-white">item 002</li>
</ul>
</div>
<div class="col-lg-4">
<h3 class="text-blue text-center">heading 03:</h3>
<ul class="list-box">
<li class="bg-blue text-white">item 03</li>
<li class="bg-blue text-white">item 003</li>
</ul>
</div>
</div>
标题01:
第01项
第001项
标题02:
第02项
第002项
标题03:
第03项
第003项
到目前为止我已经试过了
<div class="row">
<?php
$keys = array_keys($columns);
for($i = 0; $i < count($columns); $i++) { ?>
<div class="col-lg-4">
<?php foreach($columns[$keys[$i]] as $key => $value) { ?>
<li class="bg-primary text-white"><?php echo $value; ?></li>
<?php } ?>
</div>
<?php } ?>
</div>
</div>
<?php } ?>
</div>
还有这个
<div class="row">
<?php foreach ( $columns as $column ) { ?>
<div class="col-lg-4">
<h3 class="text-primary text-center">Inspire: Self Leadership</h3>
<ul class="list-box">
<?php foreach ($column as $val) { ?>
<li class="bg-primary text-white"><?php echo $val; ?></li>
<?php } ?>
</ul>
</div>
<?php } ?>
</div>
启发:自我领导
任何帮助都将不胜感激!提前谢谢你 首先,您的阵列不适合您想要做的事情。所以剩下两个选择;在第一个场景中,您必须首先更改数组结构(通过更改数组的键值使循环数组更适合您的需要),第二个场景是一个小bir静态解决方案,但它可能解决了您的问题,现在就是了
<?php
$your_array = array(
0 => array(
'label_01' => 'heading 01:',
'label_02' => 'heading 02:',
'label_03' => 'heading 03:',
),
1 => array(
'label_01' => 'item 01',
'label_02' => 'item 02',
'label_03' => 'item 03',
),
2 => array(
'label_01' => 'item 001',
'label_02' => 'item 002',
'label_03' => 'item 003',
),
); //this is your sample array :P
?>
<div class="row">
<?php
$headers = $your_array[0]; // fetch the headers first... because our main loop is headers in your case...
$items = $your_array[1]; // fetch the items... we do it because your array is unordered for your needs...
$sub_items = $your_array[2]; // fetch the sub_items... we do it because your array is unordered for your needs...
foreach($headers as $key => $val) {
?>
<div class="col-lg-4">
<h3 class="text-primary text-center"><?php echo $val; ?></h3>
<ul class="list-box">
<?php
foreach($items as $key2 => $val2) {
if($key2 == $key) {
?>
<li class="bg-primary text-white"><?php echo $val2; ?></li>
<?php
}
}
foreach($sub_items as $key2 => $val2) {
if($key2 == $key) {
?>
<li class="bg-primary text-white"><?php echo $val2; ?></li>
<?php
}
}
?>
</ul>
</div>
<?php } ?>
</div>
首先,您的阵列不适合您想要做的事情。所以剩下两个选择;在第一个场景中,您必须首先更改数组结构(通过更改数组的键值使循环数组更适合您的需要),第二个场景是一个小bir静态解决方案,但它可能解决了您的问题,现在就是了
<?php
$your_array = array(
0 => array(
'label_01' => 'heading 01:',
'label_02' => 'heading 02:',
'label_03' => 'heading 03:',
),
1 => array(
'label_01' => 'item 01',
'label_02' => 'item 02',
'label_03' => 'item 03',
),
2 => array(
'label_01' => 'item 001',
'label_02' => 'item 002',
'label_03' => 'item 003',
),
); //this is your sample array :P
?>
<div class="row">
<?php
$headers = $your_array[0]; // fetch the headers first... because our main loop is headers in your case...
$items = $your_array[1]; // fetch the items... we do it because your array is unordered for your needs...
$sub_items = $your_array[2]; // fetch the sub_items... we do it because your array is unordered for your needs...
foreach($headers as $key => $val) {
?>
<div class="col-lg-4">
<h3 class="text-primary text-center"><?php echo $val; ?></h3>
<ul class="list-box">
<?php
foreach($items as $key2 => $val2) {
if($key2 == $key) {
?>
<li class="bg-primary text-white"><?php echo $val2; ?></li>
<?php
}
}
foreach($sub_items as $key2 => $val2) {
if($key2 == $key) {
?>
<li class="bg-primary text-white"><?php echo $val2; ?></li>
<?php
}
}
?>
</ul>
</div>
<?php } ?>
</div>
使用该数组的副本和PHP Herdeoc插值的强大功能,您可以执行一点while循环。复制是为了保持原始阵列的完整性。如果您不介意,可以直接使用$data
$data = [
[
'label_01' => 'heading 01:',
'label_02' => 'heading 02:',
'label_03' => 'heading 03:'
],
[
'label_01' => 'item 01',
'label_02' => 'item 02',
'label_03' => 'item 03'
],
[
'label_01' => 'item 001',
'label_02' => 'item 002',
'label_03' => 'item 003'
]
];
echo '<div class="row">', PHP_EOL;
$copy = $data;
while(count($copy[0]))
{
$h3 = array_shift($copy[0]);
$li1 = array_shift($copy[1]);
$li2 = array_shift($copy[2]);
echo <<<"_HTML"
<div class="col-lg-4">
<h3 class="text-primary text-center">$h3</h3>
<ul class="list-box">
<li class="bg-primary text-white">$li1</li>
<li class="bg-primary text-white">$li2</li>
</ul>
</div>
_HTML;
}
echo '</div>', PHP_EOL;
$data=[
[
“label_01=>”标题01:“,
“标签02”=>“标题02:”,
“标签03”=>“标题03:”
],
[
“标签\u 01”=>“项目01”,
“标签02”=>“项目02”,
“标签03”=>“第03项”
],
[
'label_01'=>'item 001',
“标签02”=>“项目002”,
“标签03”=>“第003项”
]
];
echo'',PHP_EOL;
$copy=$data;
而(计数($copy[0]))
{
$h3=数组_移位($copy[0]);
$li1=数组_移位($copy[1]);
$li2=数组_移位($copy[2]);
echo使用该数组的副本和PHP Herdeoc插值的强大功能,您可以执行一点while循环。复制是为了保持原始数组的完整性。如果您不介意,可以直接使用$data
$data = [
[
'label_01' => 'heading 01:',
'label_02' => 'heading 02:',
'label_03' => 'heading 03:'
],
[
'label_01' => 'item 01',
'label_02' => 'item 02',
'label_03' => 'item 03'
],
[
'label_01' => 'item 001',
'label_02' => 'item 002',
'label_03' => 'item 003'
]
];
echo '<div class="row">', PHP_EOL;
$copy = $data;
while(count($copy[0]))
{
$h3 = array_shift($copy[0]);
$li1 = array_shift($copy[1]);
$li2 = array_shift($copy[2]);
echo <<<"_HTML"
<div class="col-lg-4">
<h3 class="text-primary text-center">$h3</h3>
<ul class="list-box">
<li class="bg-primary text-white">$li1</li>
<li class="bg-primary text-white">$li2</li>
</ul>
</div>
_HTML;
}
echo '</div>', PHP_EOL;
$data=[
[
“label_01=>”标题01:“,
“标签02”=>“标题02:”,
“标签03”=>“标题03:”
],
[
“标签\u 01”=>“项目01”,
“标签02”=>“项目02”,
“标签03”=>“第03项”
],
[
'label_01'=>'item 001',
“标签02”=>“项目002”,
“标签03”=>“第003项”
]
];
echo'',PHP_EOL;
$copy=$data;
而(计数($copy[0]))
{
$h3=数组_移位($copy[0]);
$li1=数组_移位($copy[1]);
$li2=数组_移位($copy[2]);
echo感谢您的回复。如果有更多数组,我们该怎么办?我们是否可以获取除第一个“$your_array[0]”之外的所有数组。这可能会解决我的问题。是的,我会尝试。如果您的数据都是预先准备好的,那么答案是肯定的。您始终必须使用$your_array[0]感谢您的回复。如果有更多数组,我们该怎么办?我们可以获取除第一个“$your_array[0]”之外的所有数组吗?这可能会解决我的问题。是的,我会尝试。如果您的数据都是相同的,答案是肯定的。您始终必须使用$your_array[0]获取所有标题谢谢您的回复。如果有更多数组,我们该怎么做?我们可以获取除第一个“数组移位($copy[0])之外的所有数组吗然后将所有其他数组放入一个变量$li中,这样就没有$li1、$li2、$li3等。这可能会解决我的问题。Shift的技巧是,它获取第一个数组值,独立于数字键或索引键。该解决方案非常适合您提供的数据。如果您有另一个结构,则必须提供另一个解决方案。我想出了另一个想法,hope它符合您的需要。答案得到了更新。这是另一个问题,但也很简单。因为它已经标记为正确,所以这里有一个pastebin。如果没有li项那么多的类,您将得到一个未定义的索引错误。我已经修复了更新行15。感谢您的回答。如果有更多数组,我们该如何做?我们可以获取所有arr吗不包括第一个“数组移位($copy[0]);”然后将所有其他数组放入一个变量$li中,这样就没有$li1、$li2、$li3等。这可能会解决我的问题。Shift的技巧是,它获取第一个数组值,独立于数字键或索引键。该解决方案非常适合您提供的数据。如果您有另一个结构,则必须提供另一个解决方案。我想出了另一个想法,hope它符合您的需要。答案得到了更新。这是另一个问题,但也很简单。因为它已经标记为正确,所以这里有一个pastebin。如果没有li项那么多的类,您将得到一个未定义的索引错误。我已经修复了更新第15行。