【发布时间】:2016-10-12 16:16:29
【问题描述】:
这是我现在拥有的代码:
<?php
$sql = DB::query("SELECT name FROM stores ORDER BY name");
foreach ($sql as $row){ $name = $row["name"]; }
// don't know how to get the current letter
$current_letter = '?';
// Set the start at 1
$i = 1;
foreach ($sql as $row){
// If the loop hits 1, add <div>
if($i == 1)
echo '<div class="store-wrapper">'.PHP_EOL;
echo '<div class="store-letter">Store Letter - '. $current_letter .'</div>'.PHP_EOL;
echo '<ul>'.PHP_EOL;
echo $id = "\t<li>".$name.'</li>'.PHP_EOL;
// If the loop hits 3, add </div>
if($i == 3) {
echo '</ul>'.PHP_EOL;
echo '</div>'.PHP_EOL; // end .store-wrapper
// Reset the counter
$i = 0;
}
// Increment up
$i++;
}
?>
我的代码有问题吗?这是我想要实现的代码输出:
<div class="store-wrapper">
<div class="store-letter">Store Letter - A</div>
<ul>
<li>ajhgjgj</li>
<li>abgjkhjh</li>
<li>avbnvnmnm</li>
</ul>
</div>
<div class="store-wrapper">
<div class="store-letter">Store Letter - B</div>
<ul>
<li>bgfghfj</li>
<li>bhgjhgj</li>
<li>bvkjhgkj</li>
</ul>
</div>
<div class="store-wrapper">
<div class="store-letter">Store Letter - C</div>
<ul>
<li>cgfghfj</li>
<li>chgjhgj</li>
<li>cvkjhgkj</li>
</ul>
</div>
另一件事是我真的不知道如何获取每个组的第一个字母。
代码的问题是输出不显示为上面的示例,并且当达到最大 3 <li> 时,组不会跳转到下一个可用字母。
我做错了什么?
【问题讨论】:
-
在声明 $name 变量后,您将关闭您的第一个 foreach。
-
第一个
foreach循环只是不断覆盖$name变量。在循环之后,它包含最后一行的名称。 -
你可以用
$row['name'][0]获取名字的第一个字母。