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