vishal_g
vishal_g

Reputation: 3931

convert multi dimentional array in keywise format

$shop = array( array( Title => "rose", 
                  Price => 1.25,
                  Number => 15 
                ),
           array( Title => "daisy", 
                  Price => 0.75,
                  Number => 25,
                ),

           array( Title => "orchid", 
                  Price => 1.15,
                  Number => 7 
                )
         );

I have an array like this. I want to convert this array keywise like below. How can I do that?

$shop = array ( "rose"  => Price => 1.25,
                       Number => 15 ),                                    
            "daisy" => Price => 0.75,
                       Number => 25 ),                                   
            "orchid" => Title => "orchid", 
                        Price => 1.15)
            );

Upvotes: 0

Views: 88

Answers (3)

djot
djot

Reputation: 2947

$shop = array( array( 'Title' => "rose",
'Price' => 1.25,
'Number' => 15
),
array( 'Title' => "daisy",
'Price' => 0.75,
'Number' => 25,
),

array( 'Title' => "orchid",
'Price' => 1.15,
'Number' => 7
)
);


$new_array = ARRAY();

foreach ($shop AS $sub_arr) {
  //$new_array[$sub_arr['Title']]['Price'] = $sub_arr['Price'];
  //$new_array[$sub_arr['Title']]['Number'] = $sub_arr['Number'];

  // edit: adapted to Michael Robinson
  $this_title = $sub_arr['Title']; 
  unset($sub_arr['Title']);
  $new_array[$this_title] = $sub_arr;
}

var_dump($new_array);
?>

Upvotes: 0

Robert Van Sant
Robert Van Sant

Reputation: 1507

try this:

$items = array();
foreach ($shop as $item) {
$index = $item['Title'];
unset($item['Title']);
$items[$index] = $item;
} 
print_r($items);

prints out:

Array
(
[rose] => Array
    (
        [Price] => 1.25
        [Number] => 15
    )

[daisy] => Array
    (
        [Price] => 0.75
        [Number] => 25
    )

[orchid] => Array
    (
        [Price] => 1.15
        [Number] => 7
    )

)

hope this helps.

Upvotes: 0

Michael Robinson
Michael Robinson

Reputation: 29498

$shopsOriginal = array(array(Title => "rose", 
                     Price => 1.25,
                     Number => 15),
                 array( Title => "daisy", 
                     Price => 0.75,
                     Number => 25),
                 array( Title => "orchid", 
                     Price => 1.15,
                     Number => 7));

$shops = array();

foreach ($shopsOriginal as $shop) {
    $title = $shop['Title']; // Store the title for this shop
    unset($shop['Title']); // Remove the title of the shop from the shop information array
    $shops[$title] = $shop; // Set the shop information in the shops array using the shop's title as key
}

var_dump($shops);

Upvotes: 3

Related Questions