我有一个来自数据库的数组
Array
(
[0] => stdClass Object
(
[cell] => 2
[price] => 1543.65
)
[1] => stdClass Object
(
[cell] => 3
[price] => 386.22
)
)
和A表
<table>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
<td>4</td>
<td>5</td>
<td>6</td>
<td>7</td>
<td>8</td>
<td>9</td>
<td>10</td>
<td>12</td>
<td>12</td>
</tr>
<tr>
<?php
print_r($sales);
if(!empty($sales)) {
foreach($sales as $sale) {
if($sale->cell == 1) {echo "<td>".$sale->price."</td>";} else { echo "<td>0</td>"; }
if($sale->cell == 2) {echo "<td>".$sale->price."</td>";} else { echo "<td>0</td>"; }
...
if($sale->cell == 12) {echo "<td>".$sale->price."</td>";} else { echo "<td>0</td>"; }
}
} else {
for($i=1; $i<=12; $i++) {
echo "<td>0</td>";
}
}
?>
</tr>
</table>
我需要在数组中显示相同单元格中的价格。现在我的问题是数组大小不是12.请帮助我如何在array['cell']
中的同一单元格上显示它?
我想将其显示为:
<tr>
<td>0</td>
<td>1543.65</td>
<td>386.22</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
</tr>
感谢您的帮助和时间。
答案 0 :(得分:0)
你可以像这样构建你的行:
echo "<tr>";
for ($i = 0; $i < 12; $i++){
echo "<td>";
if(isset($sale[$i]) && $sale[$i]->cell == $i) echo $sale[$i]->price;
else echo 0;
echo "</td>";
}
echo "</tr>";
可能的问题是,如果数组中的项目没有按顺序排列。你能做的最好的事情就是确保它们是。
答案 1 :(得分:0)
我不确定我完全理解,但是应该这样做:
echo '<tr>';
foreach($data as $value) {
$array[$value->cell] = $value->price;
}
for($i = 0; $i <= 12; $i++) {
echo '<td>';
if(isset($array[$i])
echo $array[$i];
else echo '0';
echo '</td>';
}
echo '</tr>';
其中$ data是从数据库获得的数组,$ array是相同的数据,但转换为关联数组。这也假设有12列,因此如果列总数需要灵活,则会稍微复杂一些。
编辑:实际上,我刚注意到你的数组的索引与'cell'值不匹配。我修复了我的代码以反映这一点,但如果这是你的数据看起来像你应该重新评估你的数据结构。
答案 2 :(得分:0)
这应该有效
<table>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
<td>4</td>
<td>5</td>
<td>6</td>
<td>7</td>
<td>8</td>
<td>9</td>
<td>10</td>
<td>12</td>
<td>12</td>
</tr>
<tr>
<?php
if(!empty($sales)) {
//Create an array with 12 elements and initialize each with 0
$salesArray = array_fill(1,12,0);
foreach($sales as $sale) {
//Override Cell Number Position in $salesArray so that if Cell number is present in $sales array, then it will have sale price, otherwise 0
$salesArray[$sale->cell] = $sale->price;
}
//Sort it by key. Just in case
ksort($salesArray);
foreach($salesArray as $salePrice)
{
echo "<td>".$salePrice."</td>";
}
} else {
for($i=1; $i<=12; $i++) {
echo "<td>0</td>";
}
}
?>
</tr>
</table>