Спасибо, что посмотрели на этот вопрос - я очень новичок в php и прочитал множество сообщений на массивах, но не могу найти ответ, который мне нужен.многомерный массив от json_decode до массива (array())
У меня есть строка json, которую я декодирую, используя json_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
(
....
)
В то время как с помощью foreeach я могу получить массив [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;
}
}
на вложенном Еогеаспе пытается получить доступ к SubLineItems I ч Ава пытался:
($lineitem as $sublineitem => $sublineitems),
($data[SubLineItems] as $sublineitem => $sublineitems),
($data[LineItem][SubLineItem] as $sublineitem => $sublineitems)
среди других вещей, чтобы получить индекс LineItems.SubLineItems передаваемого в петлю ...
я получил множественные ошибки при попытке это ... то, что я делаю неправильно?
В качестве предложения, чтобы максимизировать вероятность получения полезного ответа, попробуйте упростить не больше данных и кода, которые вы публикуете здесь, оставив только вопрос разумных данных ... – MarcoS
Упрощенный - спасибо за отзыв. –
вместо этого попробуйте использовать рекурсивную функцию, которая будет продолжать добавлять значение декодированного массива к ключу. if (is_array ($ process [$ key])) {decode_json ($ process [$ key])}. дайте мне знать, если вы хотите, чтобы я закодировал его для u :) – kanchan