我正在试图用数据库行格式化分层布局,例如使用PHP格式化。任何人都可以帮助我,我已尝试使用foreach循环并设置一个开关,如果国家不同但我无法让其他人正确格式化。
ID City State Country
==================================================
1 Dallas Texas United States
2 Baltimore Maryland United States
3 Houston Texas United States
4 Essex London United Kingdom
5 Salford Manchester United Kingdom
给我以下内容(最好是在多选字段中)
United States
--Maryland
----Baltimore
--Texas
----Dallas
----Houston
United Kingdom
-- London
---- Essex
-- Manchester
----Salford
<select multiple="yes" name="locations">
<option value="United States">United States</option>
<option value="Maryland">-- Maryland</option>
<option value="Baltimore">---- Baltimore</option>
<option value="Texas">-- Texas</option>
<option value="Dallas">---- Dallas</option>
<option value="Houston">---- Houston</option>
<option value="United Kingdom">United Kingdom</option>
<option value="London">-- London</option>
<option value="Essex">---- Essex</option>
<option value="Manchester">-- Manchester</option>
<option value="Salford">---- Salford</option>
</select>
答案 0 :(得分:0)
这里的基本目标是迭代行,将它们放在您正在寻找的层次结构中。我建议这样的事情:(这可能会给你一些E-STRICT警告,但是这里有一点错误检查,从来没有杀过任何人)。然后,您可以随意打印层次结构。
$locations = array();
foreach($rows as $row)
locations[$row->Country][$row->state][$row->city] = $row->id;
echo '<select multiple="yes" name="locations">';
$foreach($locations as $country=>$states){
echo "<option value='$country'>$country</option>";
$foreach($states as $state=>$cities){
echo "<option value='$state'>-- $state</option>";
$foreach($cities as $city=>$id)
echo "<option value='$city'>---- $city</option>";
}
}
echo '</select>';