【问题标题】:PHP - Help setting up loops to build multi-arrayPHP - 帮助设置循环以构建多数组
【发布时间】:2011-02-16 17:35:52
【问题描述】:

我有一个包含以下内容的数据库表:

id  user_id     plant_id        date            value
68  68          109             2011, 04, 02    300
67  68          109             2011, 02, 16    300
66  68          109             2011, 06, 11    120
65  68          109             2011, 02, 04    120
64  68          109             2010, 12, 19    55
63  68          109             2011, 01, 22    456

62  68          108             2011, 01, 22    888
61  68          108             2011, 01, 15    123

我需要为 user_id 68 创建一个数组,该数组以 plant_id 为键,如下所示:

Array
(
    [109] => Array
        (
            [2011, 04, 02] => 300
            [2011, 02, 16] => 300
            [2011, 06, 11] => 120
            [2011, 02, 04] => 120
            [2010, 12, 19] => 55
            [2011, 01, 22] => 456

        )

    [108] => Array
        (
            [2011, 01, 22] => 888
            [2011, 01, 15] => 123
        )

)

不幸的是,我用下面的代码搞砸了:

$result = mysql_query("SELECT * FROM data WHERE user_id='$user_id'");

$value_array = array();
while ($row = mysql_fetch_array($result)) {
    $value_array[$row['date']] = $row['value'];
}

$result = mysql_query("SELECT * FROM data WHERE user_id='$user_id'");

$plant_array = array();
while ($row = mysql_fetch_array($result)) {
    $plant_array[$row['plant_id']] = $value_array;
}

这为每个植物 ID 提供了相同的数组:

Array
(
    [109] => Array
        (
            [2011, 04, 02] => 300
            [2011, 02, 16] => 300
            [2011, 06, 11] => 120
            [2011, 02, 04] => 120
            [2010, 12, 19] => 55
            [2011, 01, 22] => 888 // skips value '456' because of repeated date?
            [2011, 01, 15] => 123
        )

    [108] => Array
        (
            [2011, 04, 02] => 300
            [2011, 02, 16] => 300
            [2011, 06, 11] => 120
            [2011, 02, 04] => 120
            [2010, 12, 19] => 55
            [2011, 01, 22] => 888 // skips value '456' because of repeated date?
            [2011, 01, 15] => 123
        )

)

如何创建以植物 ID 为键的数组循环,仅包含来自该特定植物 ID 的数据?

非常感谢任何帮助!

【问题讨论】:

  • 也许:$value_array[] = array($row['date'], $row['value']);

标签: php arrays loops


【解决方案1】:
$result = mysql_query("SELECT * FROM data WHERE user_id='$user_id'");

$output_array = array();
while ($row = mysql_fetch_array($result)) {
    if(!isset($output_array[$row['plant_id']]) || !is_array($output_array[$row['plant_id']])){
        $output_array[$row['plant_id']] = array();
    }

    $output_array[$row['plant_id']][$row['date']] = $row['value'];
}

【讨论】:

  • 您,先生,是个天才!非常感谢,就像一个魅力。 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-30
  • 2010-12-06
  • 1970-01-01
  • 1970-01-01
  • 2011-05-26
  • 1970-01-01
相关资源
最近更新 更多