有人向我展示了如何使用PHP的array_chunk功能@ Splitting Display into 3 or 4 equal columns普遍的共识是我的问题得到了解答,而我仍然遇到的问题与我的数据库或代码有关。我不确定我是否应该在那里提出另一个问题或者开始一个新的话题。
无论如何,我继续处理我的代码并实际上做了一些小改进,但主要问题仍然存在:1)我无法控制显示的列数;如果我将值设置为2,它将显示四列; 2)它将数据按字母顺序按字母顺序排列。例如,每列中的第一个单词以A结尾(例如Adams,Akron,Ammon和Azazi),每列中的最后一个单词以W结尾。
我想将第一列按字母顺序排列;如果该列中的最后一个单词是Bruin,那么第二列中的第一个单词应该是下一个单词(例如Cato)。如果第二列中的最后一个单词是Marsh,那么第三列中的第一个单词可能是Marto。换句话说,它从上到下流动,一次一列。
我将查询粘贴到phpMyAdmin> SQL和它完美显示。我也回应了这个......
echo join($List)
在foreach语句上方,它按字母顺序显示单个列。
所以我最好的猜测是问题出现在这两行代码之一中:
$roster_chunks = array_chunk($List, $how_many_chunks, true);
foreach ($roster_chunks as $roster_chunk_key => $roster_chunk_value)
谁能看到我做错了什么?我在下面发布了整个代码。
$stm = $pdo->prepare("SELECT P.N, P.URL, P.Title, P.Site, P.Live,
PB.Common, ART.URL, ART.Site, ART.Brief, ART.Article
FROM people P
LEFT JOIN people_bios PB ON PB.URL = P.URL
LEFT JOIN people_articles ART ON ART.URL = P.URL
WHERE P.Site = 'PX' AND ART.Site = 'PX' AND ART.Brief !='' AND P.Live = 1
ORDER BY P.N");
$stm->execute(array(
));
while ($row = $stm->fetch()) {
$URL = $row['URL'];
$Common = $row['Common'];
$List[] = '<a href="/People/'.$URL.'">'.$Common.'</a><br>';
}
// Set how many chunks you want to break the array into.
$how_many_chunks = 3;
// Break the '$Roster' array into '$roster_chunks'
$roster_chunks = array_chunk($List, $how_many_chunks, true);
// Roll through the '$roster_chunks'
foreach ($roster_chunks as $roster_chunk_key => $roster_chunk_value) {
echo '<div style="width: 175px; font-size: 75%; text-align: left; float: left; margin-right: 15px;">';
echo join($roster_chunk_value);
echo '</div>';
}
答案 0 :(得分:0)
在这种情况下,array_chunk()
不适合您。
array_chunk()
会给你
1 2 3
4 5 6
7 8 9
虽然你想要
1 4 7
2 5 8
3 6 9
您需要创建一个自定义函数,以这种方式将数组拆分为数组。如果您想订购它,array_chunk()
将无法帮助您。