显示PHP数组数据转换成表细胞与细胞数目
问题描述:
我已经从数据库显示PHP数组数据转换成表细胞与细胞数目
Array
(
[0] => stdClass Object
(
[cell] => 2
[price] => 1543.65
)
[1] => stdClass Object
(
[cell] => 3
[price] => 386.22
)
)
阵列和表
<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>
您的帮助和时间表示赞赏。
答
我不知道我的理解,完全,但是这应该这样做:
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>';
其中$的数据是从数据库中得到了阵列和阵列$是相同的数据,但转换成一个关联阵列。这也假设有12列,所以如果列的总数需要灵活,它会稍微复杂一点。
编辑:其实,我只是注意到你的数组的索引不符合“单元格”值。我修复了我的代码以反映这一点,但如果这是您的数据看起来像您应该重新评估您的数据结构。
答
你可以建立行是这样的:虽然
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>";
可能出现的问题,就是如果数组中的项目不是为了。你可以做的最好的事情是确保它们是。
答
这应该工作
<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>
你应该添加 '其他回声 “0”;'到上面的代码。 – 2013-03-04 15:33:47
谢谢ChrisMoll:D它工作 – Saleem 2013-03-04 15:51:49