-11

Hello I want to convert this type of array

[
  "Continent.0.name" => "Europe",
  "Continent.0.value" => 25,
  "Continent.1.name" => "Asia",
  "Continent.1.value" => 4.17,
  "Total" => 190
]

into

[
  'continent' => [
    'Europe' => 25
    'Asia' => 4.17
  ],
  'Total => 190
]

'name' after dot should be assigned as key and 'value' after dot shoudl be assigned as value.

Any idea?

Derek Wang
  • 9,720
  • 4
  • 15
  • 38
Shahid
  • 305
  • 3
  • 12

1 Answers1

2

Try this

EDIT:

<?php
$arr = [
  "Continent.0.name" => "Europe",
  "Continent.0.value" => 25,
  "Continent.1.name" => "Asia",
  "Continent.1.value" => 4.17,
  "Total" => 190
];
$return = array();
$continentIndex = array();
foreach ($arr as $key => $currCell) 
{
    $name = explode('.', $key);
    if(isset($name[2]) && $name[2] === 'name')
    {
        $return[$name[0]][$currCell] = array();
        $continentIndex[$name[1]] = $currCell;
    }
    else if(isset($name[2]) && $name[2] === 'value')
        $return[$name[0]][$continentIndex[$name[1]]] = $currCell;
    if(!isset($name[1]))
        $return[$key] = $currCell;
}
var_dump($return);
?>

return

array (size=2)
  'Continent' => 
    array (size=2)
      'Europe' => int 25
      'Asia' => float 4.17
  'Total' => int 190
Bast
  • 388
  • 2
  • 12