0

我有以下代码:

<?php
//The company_array:

$company_array = array(
    "AAA" => "AAA",
    "BBB" => "BBB",
    "CCC" => "CCC",
    "DDD" => "DDD"
);

$platform_data = 'PC'; //Just to keep it short :)


    foreach ($company_array as $company) {
    if ($stmt = $mysqli->prepare("SELECT price, time FROM $company WHERE platform = ? ORDER BY time ASC")) {
        $stmt->bind_param("s", $platform_data);
        $stmt->execute();
        $stmt->bind_result($price[$company], $time[$company]);
        $i=0;
        while ($stmt->fetch()) {
            $company_info[$company][$i] = array('Price' => $price[$company], 'Time' => $time[$company]);
            $i++;
        }
        $stmt->close();
    }
?>

现在我遇到了一些问题,循环的最后一次迭代似乎中断了,如果我打印 $company_info 所有但最后一家公司显示正常,最后一个似乎重复所有行的最后一个值:

Array
(
[AAA] => Array
    (
        [0] => Array
            (
                [Price] => 626.8600
                [Time] => 2013-09-27 14:30:06
            )

        [1] => Array
            (
                [Price] => 615.5900
                [Time] => 2013-09-27 15:45:05
            )

        [2] => Array
            (
                [Price] => 604.7400
                [Time] => 2013-09-27 17:45:05
            )
    )

[BBB] => Array
    (
        [0] => Array
            (
                [Price] => 246.7200
                [Time] => 2013-09-27 14:30:06
            )

        [1] => Array
            (
                [Price] => 245.4700
                [Time] => 2013-09-27 15:45:05
            )

        [2] => Array
            (
                [Price] => 244.8300
                [Time] => 2013-09-27 17:45:05
            )

    )

[CCC] => Array
    (
        [0] => Array
            (
                [Price] => 189.0900
                [Time] => 2013-09-27 14:30:06
            )

        [1] => Array
            (
                [Price] => 188.9800
                [Time] => 2013-09-27 15:45:05
            )

        [2] => Array
            (
                [Price] => 188.8900
                [Time] => 2013-09-27 17:45:05
            )

    )

[DDD] => Array
    (
        [0] => Array
            (
                [Price] => 134.3100
                [Time] => 2013-10-06 13:30:06
            )

        [1] => Array
            (
                [Price] => 134.3100
                [Time] => 2013-10-06 13:30:06
            )

        [2] => Array
            (
                [Price] => 134.3100
                [Time] => 2013-10-06 13:30:06
            )
    )
)

如您所见,公司 AAA、BBB 和 CCC 在它们的每个数组中都有不同的价格和时间,但公司 DDD 具有相同的值重复 3 次(数据库中的最后一个值),当值应该以相同的方式不同时和其他公司一样。

现在从我读过的内容来看,我做错了,而不是使用 foreach 我应该在数组上使用 implode() 并使用它,但这让我感到困惑,因为我找不到在 FROM 字段上使用它的好例子(似乎只在WHERE上使用)

我的问题是,我怎样才能摆脱使用 foreach 循环,因为它似乎会导致问题,并在 FROM 字段上使用正确的 implode() 方法?

我猜我还需要修改我的 while 循环,以便输出保持相同的格式。

4

0 回答 0