2014-09-21 155 views
0
阵列和子集

我有以下的数组:遍历PHP

阵列([@属性] =>数组([版] => 010 [发布] => 006) [页眉] = > Array([To] => 6891118750001 [From] => 9911557 [MessageID] => 306b197fff044421b31c0a2a15e356c1 [RelatesToMessageID] =>分辨率[SentTime] => 2014-09-16T12:19:50.8Z [Security] => Array ([发送方] =>数组([第135] ] => Array( [Refil阵列([Identification]] => 阵列([NCPDPID] => 9911557 [NPI] => 1801849179)[StoreName] =>药房10.6MU [地址] =>阵列([AddressLine1] => 65432 Cabernet Turn [City] => Sonoma [State] => CA [ZipCode] => 95476) [CommunicationNumbers] => Array([Communication] => Array([Number] =>数组([数据库] =>数组([NPI] => 1234567893)[Name] =>数组( [LastName] => Jefferson)[Address] => > Array([AddressLine1] => 5555 Labelle Lane [City] => Gaithersburg [State] => MD [ZipCode] => 20877) [CommunicationNumbers] => Array([Communication] => Array([0] = > Array([Number] => 3105551515 [Qualifier] = >数组( [Name] =>数组([LastName] => Li [FirstName> TE)[1] => Array( [Number] => 3015551516 [Qualifier] => FX))) ] => Ci)[性别] => U [DateOfBirth] =>阵列([Date] => 1923-10-18)) [MedicationPrescribed] => Array([DrugDescription] => ZIOPTAN 0.0015% 眼用溶液[CodeCode] => Array [(ProductCode] => 00006393130 [ProductCodeQualifier] => ND)[Quantity] => Array( [Value] => 1 [CodeListQualifier] => 38 [UnitSourceCode] => AC [PotencyUnitCode ] => C54702)[Directions => D [Substitutions] => 0 [WrittenDate] => Array([Date] => 2014-04-01)) [MedicationDispensed] => Array([DrugDescription] => ZIOPTAN 0.0015% Ophthalmic Solution [DrugCoded] => Array([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] => 01)[LastFillDate] =>数组([日期] => 2014年4月2日)))))版本= 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

回答

1

不要使用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>"; 
} 
+0

完美,谢谢! – NCoder 2014-09-21 21:53:46