我正在尝试将PHP数组分成3列(必须是列,而不是行),所以它看起来像这样:
Item 1 Item 2 Item 3
Item 4 Item 5 Item 6
Item 7 Item 8 Item 9
Item 10................
我能想到的最好的方法是将主阵列分成3个数组,每列1个,尽管我无法找到最好的方法来做到这一点 - 更具体地说,我可以用来生成3个数据的标准阵列。
答案 0 :(得分:8)
我会用这个:
$i = 1
foreach ($array as $value) {
if ($i % 3 === 0) {
echo $value . '<br />';
}
$i++;
}
或者在使用html表时:
<table>
<tr>
<?php
$i = 0;
foreach ($array as $value) {
if ($i % 3 === 0) {
echo '</tr><tr>';
}
echo "<td>" . $value . "</td>";
$i++;
}
?>
</tr>
</table>
答案 1 :(得分:3)
您可以使用array_slice
提取数组的一部分,所以:
$newArray = array();
for($i = 0; $i < count($oldArray); $i += 3) {
$newArray[] = array_slice($oldArray, $i, 3);
}
编辑:正如@deceze所指出的,这与array_chunk
完全相同。 (我知道PHP内置了一些东西。)所以请改用它!
答案 2 :(得分:1)
$data = array();
$columns = 3;
echo "<table><tr>";
for($i = 0; $i < count($data); $i++)
{
if($i%$columns == 0)
echo "</tr><tr>";
echo "<td>".$data[i$]."</td>";
}
echo "</tr></table>";
你去了,当你到达列数时它只输出另一行。当数据不是3的倍数时,您可能需要添加一些逻辑。
答案 3 :(得分:1)
在考虑您的问题主题时,它的第一印象是“专栏”,我认为您需要关注视觉方面。 “如何将数组显示为三列”可能是我的想法是错误的。但我想你想要那个。如果我的想法是正确的,请查看以下示例。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>
<?php
$arr = array(1,2,3,4,5,6,7,8,9,10);
?>
<body>
<div style="width:300px">
<ul>
<?php foreach($arr as $itm) {?>
<li style="list-style:none;float:left;width:80px;"><span style="font-size:36px;"><?php echo $itm;?></span></li>
<?php }?>
</ul>
</div>
</body>
</html>
答案 4 :(得分:1)
考虑到这一点,这应该实现我想要的 - 尽管这是最快的方法,但我不确定:
$array = (1,2,3,4,5,6,7,8,9....)
$column1 = array();
$i = 2;
foreach($array as $value) {
if ($i++ % 3 == 0) {
$column1[] = $value;
}
}
$column2 = array();
$i = 1;
foreach($array as $value) {
if ($i++ % 3 == 0) {
$column2[] = $value;
}
}
$column3 = array();
$i = 0;
foreach($array as $value) {
if ($i++ % 3 == 0) {
$column3[] = $value;
}
}
编辑:虽然使用单个foreach循环,但与上面相同:
$array = (1,2,3,4,5,6,7,8,9....)
$column1 = array();
$column2 = array();
$column3 = array();
$i = 2;
$j = 1;
$k = 0;
foreach($array as $value) {
if ($i++ % 3 == 0) {
$column1[] = $value;
}
if ($j++ % 3 == 0) {
$column2[] = $value;
}
if ($k++ % 3 == 0) {
$column3[] = $value;
}
}
答案 5 :(得分:1)
使用array_chunk可以拆分数组:
$rows = array_chunk($yourArray, '3'); // 3 = column count;
foreach ($rows as $columns) {
echo "<div class='row'>";
foreach ($columns as $column) {
echo "<div class='column'>$column</div>";
}
echo "</div>";
}
答案 6 :(得分:1)
header('Content-Type: text/plain');
echo '<table>';
$colNum = 3;
$regNum = 10;
for ($i = 1; $i <= $regNum; $i++) {
if (($i % $colNum) == 1) {
echo "\n\t".'<tr>';
}
echo "\n\t\t".'<td>'. $i .'</td>';
if (($i % $colNum) == 0 or $regNum <= $i) {
echo "\n\t".'</tr>';
}
}
echo "\n".'</table>';