Проход по массивам и подмножествам в переполнении стека

У меня есть следующий массив:

Array ([@attributes] => Array ([версия] => 010 [выпуск] => 006)
[Header] => Array ([To] => 6891118750001 [From] => 9911557
[MessageID] => 306b197fff044421b31c0a2a15e356c1 [RelatesToMessageID] => Разрешение [SentTime] => 2014-09-16T12: 19: 50.8Z [Безопасность] => Массив ([Отправитель] => Массив ([TertiaryIdentification] => 165) [Получатель] =>
Array ([TertiaryIdentification] => 2341)) [RxReferenceNumber] =>
RxRef # REFREQ 2.1 [PrescriberOrderNumber] => 13) [Body] => Array (
[RefillRequest] => Массив ([Аптека] => Массив ([Идентификация] =>
Массив ([NCPDPID] => 9911557 [NPI] => 1801849179) [StoreName] => CA
Аптека 10,6MU [Адрес] => Массив ([AddressLine1] => 65432 Каберне
Включите [Город] => Сонома [Штат] => CA [ZipCode] => 95476)
[CommunicationNumbers] => Array ([Communication] => Array ([Number] => 7075557071 [Qualifier] => TE))) [Prescriber] => Массив ([Идентификация] => Массив ([NPI] => 1234567893) [Имя] => Массив (
[LastName] => Джефферсон) [Address] => Массив ([AddressLine1] => 5555
Labelle Lane [City] => Гейтерсберг [Штат] => MD [ZipCode] => 20877)
[CommunicationNumbers] => Array ([Communication] => Array ([0] =>
Array ([Number] => 3105551515 [Qualifier] => TE) [1] => Array (
[Number] => 3015551516 [Qualifier] => FX)))) [Patient] => Array (
[Name] => Array ([LastName] => Li [FirstName] => Ci) [Gender] => U
[DateOfBirth] => Array ([Date] => 1923-10-18))
[MedicationPrescribed] => Массив ([DrugDescription] => ЗИОПТАН 0,0015%
Офтальмологический раствор [DrugCoded] => Array ([ProductCode] =>
00006393130 [ProductCodeQualifier] => ND) [Количество] => Массив (
[Value] => 1 [CodeListQualifier] => 38 [UnitSourceCode] => AC
[PotencyUnitCode] => C54702) [Указания] => D [Замены] => 0
[WrittenDate] => Array ([Date] => 2014-04-01))
[MedicationDispensed] => Массив ([DrugDescription] => ЗИОПТАН 0,0015%
Офтальмологический раствор [DrugCoded] => Array ([ProductCode] =>
00006393130 [ProductCodeQualifier] => ND [DrugDBCode] => 1244616
[DrugDBCodeQualifier] => SBD) [Количество] => Массив ([Значение] => 1
[CodeListQualifier] => 38 [UnitSourceCode] => AC [PotencyUnitCode] =>
C54702) [Указания] => D [Подстановки] => 0 [WrittenDate] => Массив
([Date] => 2014-04-01) [LastFillDate] => Array ([Date] =>
2014-04-02))))) версия = 010

но когда я перебираю это с этим кодом:

function displayArrayRecursively($arr, $indent='') {
if ($arr) {
foreach ($arr as $value) {

if (is_array($value)) {

displayArrayRecursively($value, $indent . '');
} else {
echo key($arr) . " = $value<br>";
}
}
}
}

displayArrayRecursively($arrXml);

Он печатает все значения, но не все правильные имена ключей подмножества связаны. Есть идеи?

Спасибо!

NCoder

0

Решение

Не используйте key() функция, но доступ к ключу массива напрямую с помощью переменной $key (или любое другое имя) foreach(), Кроме того, вы даже не использовали переменную $indentпоэтому я добавил кусок кода, который вам нужен.
Это функция, которую вы ищете:

function displayArrayRecursively($arr, $indent='')
{
if ($arr)
foreach ($arr as $key => $value)
if (is_array($value))
displayArrayRecursively($value, $indent.'--');
else
echo $indent.$key." = $value<br>";
}
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]