2013-03-04 118 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>