我的array_chunk有什么问题?

时间:2014-01-02 21:30:01

标签: php

有人向我展示了如何使用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>';
}

1 个答案:

答案 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()将无法帮助您。