Php 柱的模量使用方法
我目前有一份名单(Php 柱的模量使用方法,php,optimization,Php,Optimization,我目前有一份名单(),我将其分为两列。但是在完成代码之后,我一直在想是否有更有效或更干净的方法来做同样的事情 echo "<table class='area_list'><tr>"; // Loop users within areas, divided up in 2 columns $count = count($areaArray); for($i=0 ; $i<$count ; $i++) { $uid = $areaArray[$i]; // g
- ),我将其分为两列。但是在完成代码之后,我一直在想是否有更有效或更干净的方法来做同样的事情
echo "<table class='area_list'><tr>";
// Loop users within areas, divided up in 2 columns
$count = count($areaArray);
for($i=0 ; $i<$count ; $i++) {
$uid = $areaArray[$i];
// get the modulus value + ceil for uneven numbers
$rowCalc = ($i+1) % ceil($count/2);
if ($rowCalc == 1) echo "<td><ul>";
// OUTPUT the actual list item
echo "<li>{$users[$uid]->profile_lastname}</li>";
if ($rowCalc == 0 && $i!=0) echo "</ul></td>";
}
echo "</tr></table>";
echo”“;
//在区域内循环用户,分为两列
$count=计数($areaArray);
对于($i=0;$i可以循环两次,每列循环一次。第一列从0开始,第二列从1开始。增量为2
编辑:为了使其更美观,请将列本身放入一个循环中:
$cols = 3;
echo '<table><tr>';
// column loop
for ($c = 1; $c <= $cols; $c++) {
echo '<td><ul>';
// item loop
for ($i = 0; $i < count($areaArray); $i += $c) {
echo '<li>...</li>';
}
echo '</ul></td>';
}
echo '</tr></table>';
$cols=3;
回声';
//列循环
for($c=1;$c不知道这是否是@llia的意思,但是如果有这样的for循环:
//declare how many columns are needed
$cols=2;
//iterate over each row of entries (down the column)
for ($i=0;i<$count;i+=cols){
echo "<td><ul>";
//entry loop (across the row)
for($j=0;j<$cols;j++){
//whose line is it anyway?
$uid = $areaArray[$i+$j];
echo "<li>{$users[$uid]->profile_lastname}</li>";
}
//end entry loop
echo "</ul></td>";
}
//end row loop
//声明需要多少列
$cols=2;
//迭代每一行条目(沿列向下)
对于($i=0;i这应该可以满足您的要求。我几乎只是将其他两个答案组合在一起,所以每个人的答案都是+1
$cols=3;
$user_count = count($users);
echo "<table class='area_list'><tr>";
// Column loop
for($i=0;$i<$cols;$i++){
echo "<td><ul>";
// user loop
for($j=$i;$j<$user_count;$j+=$cols){
echo "<li>{$users[$j]->profile_lastname}</li>";
}
echo "</ul></td>";
}
echo "</tr></table>";
$cols=3;
$user\u count=计数($users);
回声“;
//列循环
对于($i=0;$i$cols=3;
$chunkSize=ceil(计数($areaArray)/$cols);
echo$chunkSize*$cols;
foreach(数组\块($areaArray,$chunkSize)作为$items):?>
这是实现这一点的直截了当的方法,我希望能够更改列数。您可以将整个过程包装在一个双循环中—一个用于写入列,另一个用于写入项。很抱歉,我会吹毛求疵,但您错过了结束符。谢谢。因为我有一个arra,所以不太管用y$areaArray
进行迭代(在上面的代码段中遗漏了这一点,所以这是我的错)。因此,我的for循环中不能有一个在数组本身上迭代的for循环。这就是为什么我要检查每个$I
,但它给了我一个不同的视角,谢谢!我完全没有看到“$uid”赋值!但我会编辑它以显示您可以将它放在哪里。感谢新的努力,它没有真正起作用要么因为数组的计数器只执行$i+$j
,但它必须从第一列的1-5开始,然后从第二列的6-10开始。因此,我需要能够在第二列中将其设置为6。我想我得到了我所要求的,因为现在有多个透视图供我尝试。:)实际上,这也不起作用,因为$j+=$cols
使它每次跳转3
。而且它仍然没有考虑整个用户数组。它必须在内部for循环中相乘,$j
首先设置为=($count/2)*$cols
使计数器从正确的位置开始工作。感谢您的努力,因为这实际上让我找到了一种新的方法,只要我做了刚才指定的更改。谢谢!+1所有用户都是输出的。它应该每次跳3,因为我将它设置为做3列-您希望能够指定如何进行很多列,对吗?每次用户循环都从0开始,然后从1开始,然后从2开始。所以第一个循环是用户0,3,6,9,12,15。下一个循环是用户1,4,7,10,13…下一个循环是用户2,5,8,11等等…但不管怎样,我很高兴它是有用的。
$cols = 3;
$chunkSize = ceil(count($areaArray) / $cols);
echo $chunkSize * $cols;
foreach (array_chunk($areaArray, $chunkSize) as $items) : ?>
<td>
<ul>
<?php foreach ($items as $item) : ?>
<li><?php echo $item ?></li>
<?php endforeach; ?>
</ul>
</td>
<?php endforeach; ?>