PHP:如何将点符号键分隔为带有键前缀的数组

问题描述 投票:-11回答:1

您好我想转换这种类型的数组

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

[

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

点后的'name'应指定为键,点后的'value'应指定为值。

任何的想法?

php php-5.3 php-7 php-5.6
1个回答
2
投票

试试这个

编辑:

<?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);
?>

返回

array (size=2)
  'Continent' => 
    array (size=2)
      'Europe' => int 25
      'Asia' => float 4.17
  'Total' => int 190
© www.soinside.com 2019 - 2024. All rights reserved.