我已经搜索了这个问题的答案,唉,它在舞会之夜就像一个辣妹一样避开了我。
我基本上构建了一个客户端请求的目录,该目录需要按字母顺序排列的标题,后跟类别名称。这有点麻烦,我使用的是codeigniter。
我有一个基本的模型函数,可以按名称获取所有主要类别。
function getAllMainCats(){
$this->db->from('main_categories');
$this->db->order_by('name', 'ASC');
$query = $this->db->get();
return $query->result_array();
}
这就是我被困的地方。 我在网上看到了几个不同的结果,但是我无法通过与Codeigniter一起成功修改它们。
使用伪代码,这就是我想象它会起作用的方式
getAllMainCategories
foreach( mainCategories as mainCategory){
grabfirstletterofeachcategory;
putThatIntoArray();
Count amount of items in new array
display that amount of lists
apply links according to the foreach loop as maincategory.
}
基本上
<li>
<h3>A</h3>
<a href='/'>Almond</a>
<a href='/'>Apple</a>
<a href='/'>Artichoke</a>
</li>
<li>
<h3>B</h3>
<a href='/'>Bacon</a>
<a href='/'>Banana</a>
<a href='/'>Beans</a>
</li>
ETC
答案 0 :(得分:1)
实际上,距您的伪代码还不远:
$categories = $this->mymodel->getAllMainCats();
$ordered = array();
foreach($categories as $cat){
$first = strtoupper($cat[0]);
$ordered[$first][] = $cat;
}
你应该有一个像:
这样的数组array( A => array( 0 => Almond, 1 => Apple..),
B => array( 0 => Banana...),
所以现在你循环:
<ul>
<?php foreach($ordered as $key => $value): ?>
<?php // outer loop over the keys, i.e. the letters: ?>
<li>
<h3><?php echo $key;?></h3>
<ul>
<?php foreach($value as $val):?>
<?php // inner loop over the values, i.e. the elements:?>
<li><a href='/'><?php echo $val;?></a></li>
<?php endforeach;?>
</ul>
</li>
<?php endforeach;?>
</ul>
您可以在行动here
中看到它