簡體   English   中英

遍歷PHP中的數組和子集

[英]Loop through arrays and subsets in PHP

我有以下數組:

Array([@attributes] => Array([version] => 010 [release] => 006)[Header] => Array([To] => 6891118750001 [From] => 9911557 [MessageID] => 306b197fff044421b31c0a2a15e356c1 [RelatesToMessageID ] =>分辨率[SentTime] => 2014-09-16T12:19:50.8Z [Security] => Array([Sender] => Array([TertiaryIdentification] => 165)[Receiver] => Array([TertiaryIdentification] => 2341))[RxReferenceNumber] => RxRef#REFREQ 2.1 [PrescriberOrderNumber] => 13)[Body] => Array([RefillRequest] => Array([Pharmacy] => Array([Identification] => Array([ NCPDPID] => 9911557 [NPI] => 1801849179)[StoreName] => CA Pharmacy 10.6MU [Address] => Array([AddressLine1] => 65432 Cabernet Turn [City] => Sonoma [State] => CA [ZipCode ] => 95476)[CommunicationNumbers] => Array([Communication] => Array([Number] => 7075557071 [Qualifier] => TE))))[Prescriber] => Array([Identification] => Array([NPI ] => 1234567893)[名稱] =>數組([LastName] => Jefferson)[地址] =>數組([AddressLine1 ] => 5555 Labelle Lane [City] => Gaithersburg [State] => 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 [名字] => Ci)[性別] => U [DateOfBirth] =>數組([Date] => 1923-10-18))[MedicationPrescribed] =>數組([DrugDescription] => ZIOPTAN 0.0015%Ophthalmic解決方案[DrugCoded] =>數組([ProductCode] => 00006393130 [ProductCodeQualifier] => ND)[Quantity] => Array([Value] => 1 [CodeListQualifier] => 38 [UnitSourceCode] => AC [PotencyUnitCode] = > C54702)[方向] => D [替代] => 0 [書面日期] =>陣列([日期] => 2014-04-01))[已分配葯物] =>陣列([葯物描述] => ZIOPTAN 0.0015%眼葯解決方案[DrugCoded] =>數組([ProductCode] => 00006393130 [ProductCodeQualifier] => ND [DrugDBCode] => 1244616 [DrugDBCodeQualifier] => SBD)[Quantity] => Array([Value] => 1 [CodeListQualifier] => 38 [UnitSourceCode] => AC [PotencyUnitCode] => C54702)[Directions] => D [Substitutions] => 0 [WrittenDate] = > Array([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

不要使用key()函數,而是使用foreach()的變量$key (或任何名稱)直接訪問數組鍵。 另外,您甚至沒有使用$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>";
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM