views:

49

answers:

5

Hello,

This is the set of result from my database

print_r($plan);
Array
(
    [0] => Array
        (
            [id] => 2
            [subscr_unit] => D
            [subscr_period] => 
            [subscr_fee] => 
        )

    [1] => Array
        (
            [id] => 3
            [subscr_unit] => M,Y
            [subscr_period] => 1,1
            [subscr_fee] => 90,1000
        )

    [2] => Array
        (
            [id] => 32
            [subscr_unit] => M,Y
            [subscr_period] => 1,1
            [subscr_fee] => 150,1500
        )

)

How can I change the $plan[0] to $plan[value_of_id]

Thank You.

A: 
$plans = array();
foreach($plan as $item)
{
    $plans[$item['id']] = $item;
}

$plans contains the associative array.

This is just a simple solution.

Ikke
+3  A: 

This won't do it in-place, but:

$new_plan = array();
foreach ($plan as $item)
{
  $new_plan[$item['id']] => $item;
}
Tom
+2  A: 

Seeing the code you used to assemble $plan would be helpful, but I'm going assume it was something like this

while ($line = $RES->fetch_assoc()) {
    $plan[] = $line;
}

You can simply assign an explicit value while pulling the data from your database, like this:

while ($line = $RES->fetch_assoc()) {
    $plan[$line['id']] = $line;
}

This is assuming $RES is the result set from your database query.

Erik
A: 
$newplan = array();
foreach($plan as $value) {
    $id = $value["id"];
    unset($value["id"]);
    $newplan[$id] = $value;
}
Pindatjuh
+1  A: 

You could also use array_reduce which is generally used for, well, reducing an array. That said it can be used to achieve an array format like you want by simple returning the same items as in the input array but with the required keys.

// Note: Uses anonymous function syntax only available as of PHP 5.3.0
//       Could use create_function() or callback to a named function
$plan = array_reduce($plan, function($reduced, $current) {
    $reduced[$current['id']] = $current;
    return $reduced;
});

Note however, if the paragraph above did not make it clear, this approach is overkill for your individual requirements as outlined in the question. It might prove useful however to readers looking to do a little more with the array than simply changing the keys.

salathe