#php #mysql #arrays #nested-loops
#php #mysql #массивы #вложенные циклы
Вопрос:
Я планирую создать таблицу html, заполненную местоположениями, за которыми следуют 2 подкатегории объектов, все извлеченные из базы данных и сохраненные в массиве PHP. Что-то странное происходит с моим foreach
циклом.
$loc_query = "SELECT Location FROM Locations;";
$loc_result = $mysqli->query($loc_query);
while($row = $loc_result->fetch_assoc()){
$loc_results[] = $row;
}
foreach($loc_results as $loc){
echo '<tr align="right"><td width="20" align="center" onmousedown="show()" bordercolor="#000000"
style="cursor:pointer;font-size:10pt;font-weight:bold;border-style:solid;border-width:1pt"> </td>
<td width="120" align="left"
bgcolor="#00FFFF" style="border-top-style:solid;border-top-width:1pt;border-right-style:solid;
border-right-width:1pt;border-bottom-style:solid;border-bottom-width:1pt" >'.$loc['Location'].'</td></tr>';
$CC_query = "SELECT Cost_Center_Category.Cost_Center_Category_Name, Cost_Center_Name,
Locations.Location_Abbrev, Locations.Location, LC,
FX, RR_In_LC, Hours
FROM Cost_Centers
LEFT JOIN Cost_Center_Category
ON Cost_Centers.Cost_Center_Category = Cost_Center_Category.Cost_Center_Category_ID
LEFT JOIN Locations ON Cost_Centers.Location = Locations.Location_Abbrev;";
$CC_result = $mysqli->query($CC_query);
while($row = $CC_result->fetch_assoc()){
$CC_results[] = $row;
}
foreach ($CC_results as $result){
switch($result['Cost_Center_Category_Name'])
{
case 'Strategy amp; Performance' :
echo '<tr align="right"><td width="20" align="center" onmousedown="show()" bordercolor="#000000"
style="cursor:pointer;font-size:10pt;font-weight:bold;border-style:solid;border-width:1pt"> </td>
<td width="150" align="left"
bgcolor="#FFCC00"
style="border-top-style:solid;border-top-width:1pt;border-right-style:solid;
border-right-width:1pt;border-bottom-style:
solid;border-bottom-width:1pt"
onmousedown="show()">'.$result['Cost_Center_Category_Name'].'</td></tr>';
break;
}
}
}
Он выводит все местоположения нормально, но как только я пытаюсь заполнить каждое местоположение категорией центра затрат, он выводит что-то вроде
- Нюрнберг
- Стратегия и производительность
- Regensburg
- Стратегия и производительность
- Стратегия и производительность
- Sibiu
- Стратегия и производительность
- Стратегия и производительность
- Стратегия и производительность
и он растет каждый раз. Я знаю, что это должно быть как-то связано с моей логикой, я пробовал такие вещи, break 2
и я думаю, что я слишком долго смотрел на это, это, вероятно, действительно очевидно. Что-то не так с тем, как я настраиваю вложенные циклы, или это что-то еще?
Ответ №1:
Сброс $CC_results
в пустой массив на каждой итерации foreach
цикла:
foreach($loc_results as $loc) {
$CC_results = array();
// all other code stays the same
}
Комментарии:
1. ты спасатель! Спасибо!