0

I have a database table that contains the following:

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

I need to create an array for user_id 68 that is keyed to plant_id and looks like this:

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
        )

)

Unfortunately I am screwing it up with the following code:

$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;
}

which gives me the same arrays for each 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] => 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
        )

)

How do I create the array loops keyed to plant_id, containing data only from that specific plant_id?

Any help is greatly appreciated!

1
  • maybe: $value_array[] = array($row['date'], $row['value']); Commented Feb 16, 2011 at 18:08

1 Answer 1

3
$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'];
}
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.