在PHP中将数组内容输出为嵌套列表
我有数组在PHP中将数组内容输出为嵌套列表,php,html,arrays,Php,Html,Arrays,我有数组array([0]=>array(1,2,3,4,5)[1]=>array(6,7,8,9,10))我想这样显示它: <ul> <li> <a href=""/>FIRST ELEMENT OF THE array ==> 1</a> <a href=""/>2ND ELEMENT OF THE TAB ==> 2</a> <a href=""/>3THIRD
array([0]=>array(1,2,3,4,5)[1]=>array(6,7,8,9,10))
我想这样显示它:
<ul>
<li>
<a href=""/>FIRST ELEMENT OF THE array ==> 1</a>
<a href=""/>2ND ELEMENT OF THE TAB ==> 2</a>
<a href=""/>3THIRD ELEMENT==> 3</a>
<a href=""/>FORTH ELEMENT OF THE TAB ==> 4</a>
<a href=""/>FIFTH ELEMENT==> 5</a>
</li>
<li>
<a href=""/>6th ELEMENT==> 6</a>
<a href=""/>7th ELEMENT OF THE TAB ==> 7</a>
<a href=""/>8th ELEMENT==> 8</a>
<a href=""/>9th ELEMENT OF THE TAB ==> 9</a>
<a href=""/>10th ELEMENT OF THE TAB ==> 9</a>
</li>
</ul>
-
-
如何在PHP中实现这一点?我正在考虑使用array\u slice
<?php
for($i = 0 ; $i < count($tab) ; $i += 2) {
echo "<a href>" . $tab[$i] . "</a>";
echo "<a href>" . $tab[$i+1] . "</a>";
}
?>
就像那样。试试看
echo "<ul>";
$i=0;
$theCount = count($tab);
while($i<$theCount){
echo "<li>";
echo " <a href=""/>FIRST ELEMENT OF THE TAB ==> {$tab[$i]}</a>";
$i++;
echo " <a href=""/>FIRST ELEMENT OF THE TAB ==> {$tab[$i]}</a>";
echo "</li>";
$i++;
}
echo "</ul>";
echo“”;
$i=0;
$theCount=计数($tab);
而($i根据实际阵列结构进行了更新
您的解决方案是一个简单的嵌套foreach
$tab = array(array(1,2,3,4,5), array(6,7,8,9,10));
echo '<ul>';
foreach ($tab as $chunks) {
echo '<li>';
foreach($chunks as $chunk) {
echo '<a href="">' . $chunk . '</a>';
}
echo '</li>';
}
echo '</ul>';
$tab=数组(数组(1,2,3,4,5),数组(6,7,8,9,10));
回声“”;
foreach($tab作为$chunks){
回音“- ”;
foreach($chunk作为$chunk){
回声';
}
回音“
”;
}
回声“
”;
试试这个:
$sections = array_chunk(array(1,2,3,4,5,6,7,8,9,10), 2);
echo '<ul>';
foreach($sections as $value)
{
echo '<li>';
echo '<a href=""/>'.$value[0].' ELEMENT OF THE TAB ==> '.$value[0].'</a>';
echo '<a href=""/>'.$value[1].' ELEMENT OF THE TAB ==> '.$value[1].'</a>';
echo '</li>';
}
echo '</ul>';
$sections=array_chunk(数组(1,2,3,4,5,6,7,8,9,10),2);
回声“”;
foreach($value)
{
回音“- ”;
回声';
回声';
回音“
”;
}
回声“
”;
下面是另一种方法(演示):
只要数组中始终有偶数项,这将起作用。奇数将导致索引溢出。这会在每次迭代时重新计算数组。最好缓存该值。您可以粘贴数组的php代码吗?这是不正确的
。应该是
您的要求完全改变了…您需要如果你不想告诉我们所有的事实,就不要浪费我们的时间想出一个问题的解决方案。第一次花时间正确地解释事情。注意下面放置的@nikc确实适用:这只对偶数项有效。简单-如果丑陋-修复将转到计数()-1,然后检查是否需要再打印1。这会在每次迭代中重新计算数组。你应该分离计数。作为一种学术加速,是的,但我不认为这个问题会要求这样的优化。不过,我会修复“错误”:)取点,取点,但有人可能会争辩说,这是为了清晰地理解……的流程。。。。owkee,nevermind;)+1号代码现在更安全了。但是,源数组中的元素数量不均匀可能会有问题。我认为您应该翻转此条件,并首先放置包含close/openli
元素的块。它看起来更容易阅读。array\u chunk
无疑是一种方法,但源数组中元素数量不均会引发错误。@Stephen,你是对的,只是稍微检查一下($value[0])、($value[1])是否可以解决此问题,但我同意这不是最好的方法,我自己也有几种方法,现在考虑一下,但在我回答时,我想到了这一点……在OP更改了要求后,删除了数组块。
<?php
$tab = array(1,2,3,4,5,6,7,8,9,10);
//how many <a> elements per <li>
$aElements = 2;
$totalElems = count($tab);
//open the list
echo "<ul><li>";
for($i=0;$i<$totalElems;$i++){
if($i != 0 && ($i%$aElements) == 0){ //check if I'm in the nTh element.
echo "</li><li>"; //if so, close curr <li> and open another <li> element
}
//print <a> elem inside the <li>
echo "<a href =''>".$tab[$i]."</a>";
}
//close the list
echo "</li></ul>";
?>