0

我有一个来自数据库的数组

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>

感谢您的帮助和时间。

4

3 回答 3

1

我不确定我是否完全理解,但应该这样做:

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 列,因此如果列的总数需要灵活,它会稍微复杂一些。

编辑:实际上,我只是注意到您的数组索引与“单元格”值不匹配。我修复了我的代码以反映这一点,但如果这是您的数据的样子,您可能应该重新评估您的数据结构。

于 2013-03-04T15:29:22.507 回答
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>";

但可能的问题是,如果数组中的项目不按顺序排列。你能做的最好的事情就是确保它们是。

于 2013-03-04T15:24:34.247 回答
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>
于 2013-03-04T15:34:20.860 回答