从键创建数组

问题描述

先谢谢你。有没有办法从键名创建多维数组。

$array = array(
    'brand/name' => 'BRAND_NAME','brand/model' => 'MODEL_NO','brand/inv/qty' => '20','brand/inv/cost' => '30','wh' => 'NY','brand/inv/sales' => '40'
);

转换到这个数组。

$array = array(
    'brand' => array(
        'name' => 'BRAND_NAME','model' => 'MODEL_NO','inv' => array(
            'qty' => 20,'cost' => 30,'sales' => 40,)
    ),'wh' => 'NY'
);

谢谢!

解决方法

试试我的代码(我使用引用运算符“&”来获取连续的内部数组):

输入数组:

$array = array(
        'brand/name' => 'BRAND_NAME','brand/model' => 'MODEL_NO','brand/inv/qty' => '20','brand/inv/cost' => '30','wh' => 'NY','brand/inv/sales' => '40'
);

php 代码:

<?php

$resultArray = array();

foreach($array as $path => $element) {
    $pathArray = explode("/",$path);

    $auxRef = &$resultArray;

    foreach($pathArray as $pathPart) {
        if(! array_key_exists($pathPart,$auxRef)) {
            $auxRef[$pathPart] = array();
        }

        $auxRef = &$auxRef[$pathPart];
    }

    $auxRef = $element;
    unset($auxRef);
}
?>

结果数组:

array ( 'brand' => array ( 'name' => 'BRAND_NAME','model' => 'MODEL_NO','inv' => array ( 'qty' => '20','cost' => '30','sales' => '40',),)