2013-03-04 73 views
0

我已经从数据库显示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> 

您的帮助和时间表示赞赏。

回答

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>'; 

其中$的数据是从数据库中得到了阵列和阵列$是相同的数据,但转换成一个关联阵列。这也假设有12列,所以如果列的总数需要灵活,它会稍微复杂一点。

编辑:其实,我只是注意到你的数组的索引不符合“单元格”值。我修复了我的代码以反映这一点,但如果这是您的数据看起来像您应该重新评估您的数据结构。

+0

你应该添加 '其他回声 “0”;'到上面的代码。 – 2013-03-04 15:33:47

+0

谢谢ChrisMoll:D它工作 – Saleem 2013-03-04 15:51:49

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>"; 

可能出现的问题,就是如果数组中的项目不是为了。你可以做的最好的事情是确保它们是。

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>