从json_解码到数组(array())的多维数组

从json_解码到数组(array())的多维数组,json,multidimensional-array,Json,Multidimensional Array,谢谢你看这个问题-我对php非常陌生,读过很多关于数组的文章,但似乎找不到我需要的答案 我有一个json字符串,我使用json\u decode($string,true)解码它。它最多嵌套四层,嵌套的级别因文件而异 我想构建一个关联数组,以便最终将其放入mysql 我遇到问题的解码文件部分是: [LineItems] => Array ( [0] => Array ( [ItemNumber] =>

谢谢你看这个问题-我对php非常陌生,读过很多关于数组的文章,但似乎找不到我需要的答案

我有一个json字符串,我使用
json\u decode($string,true)
解码它。它最多嵌套四层,嵌套的级别因文件而异

我想构建一个关联数组,以便最终将其放入mysql

我遇到问题的解码文件部分是:

[LineItems] => Array
    (
        [0] => Array
            (
                [ItemNumber] => 1
                [Category] => Prep Sink with 18"DB
                [SubLineItems] => Array
                    (
                        [0] => Array
                            (
                                [ItemTypeCode] => 0
                                [ItemTypeDescription] => Normal
                                [VendorId] => 55d14674-f295-4f9c-9c37-79f2
                                ... deleted for readability

                                [CustomerSpecificPricings] => Array
                                    (
                                    .... deleted for readablity
                                    )

        [1] => Array
            (
                [ItemNumber] => 2
                [Category] => Combi Oven
                [SubLineItems] => Array
                    (
                        [0] => Array
                            (
                                ....
                                    (
                                    )

                                [ElectricalUtilityGrids] => Array
                                    (
                                    .... 
                                    )
使用Foreech时,我可以使用以下方法获得要构建的[LineItems]数组:

$LineItems=array();

foreach($data['LineItems'] as $lineitems => $lineitem){
    $lineadd=array(
        $ItemNumber=$lineitem['ItemNumber'],
        $Category=$lineitem['Category']
        );
}
但当我尝试添加嵌套数组时:

$LineItems=array();
$SubLineItems=array();

foreach($data['LineItems'] as $lineitems => $lineitem){
    $lineadd=array(
        $ItemNumber=$lineitem['ItemNumber'],
        $Category=$lineitem['Category']
        );
        $LineItems[]=$lineadd;
            foreach($data[LineItems]['SubLineItems'] as $sublineitem =>    $sublineitems){
                $sublineadd[]=array(
                $ItemTypeCode=$sublineitem['ItemTypeCode'],
                $ItemTypeDescription=$sublineitem['ItemTypeDescription'],
                $VendorId=$sublineitem['VendorId'],
                ... deleted rest of list for readability
                );
            $SubLineItems[] = $sublineadd;
            }
    }
在试图访问子行项的嵌套foreach上,我尝试了:

($lineitem as $sublineitem => $sublineitems), 
($data[SubLineItems] as $sublineitem => $sublineitems), 
($data[LineItem][SubLineItem] as $sublineitem => $sublineitems)
要获取传递给循环的LineItems.SubLineItems索引,请执行以下操作


我在尝试此操作时收到多个错误。。。我做错了什么?

我用以下方法解决了我的问题:

$new_array=array();
$iterator = new RecursiveIteratorIterator(
    new RecursiveArrayIterator($json),
    RecursiveIteratorIterator::SELF_FIRST
);
foreach ($iterator as $key => $item) {
        $new_array[$key]=$item;        
        }

有更好的解决方案吗?

我使用以下方法解决了我的问题:

$new_array=array();
$iterator = new RecursiveIteratorIterator(
    new RecursiveArrayIterator($json),
    RecursiveIteratorIterator::SELF_FIRST
);
foreach ($iterator as $key => $item) {
        $new_array[$key]=$item;        
        }

有更好的解决方案吗?

作为建议,为了最大限度地提高获得有用答案的概率,请尽量简化您在此处发布的大多数数据和代码,只留下问题敏感的数据…简化-感谢您的提示。相反,请尝试使用递归函数,该函数将不断向密钥添加解码的数组值。if(is_数组($process[$key]){decode_json($process[$key])}。如果你想让我为你编写代码,请告诉我:)@kanchan-请提供代码片段!我没有遵循($process[$key])。非常感谢。作为建议,为了最大限度地提高获得有用答案的概率,请尽量简化您在此处发布的大多数数据和代码,只保留有问题的数据…简化-感谢您的提示。相反,请尝试使用递归函数,该函数将继续向密钥添加解码数组值。if(is_数组($process[$key]){decode_json($process[$key])}。如果你想让我为你编写代码,请告诉我:)@kanchan-请提供代码片段!我没有遵循($process[$key])。非常感谢。