PHP嵌套循环,其中值是数组下一级的关键

1 php foreach nested multidimensional-array

我对PHP比较陌生,希望你能帮我解决问题.我正在从数据库中选择数据到一个数组中进行计时.最后,我想计算给定客户在项目上花费的总小时数.

以下是填充多维数组的代码:...

foreach ($record as $data) {  
  $mArray = array();  
  $name = $data['user'];  
  $customer = $data['customer'];  
  $project = $data['project'];  
  $hours = $data['hours'];  

  $mArray[$name][$customer][$project] += $hours;  
}
Run Code Online (Sandbox Code Playgroud)

...

我现在想迭代$ mArray来生成一个像这样的xml文件:

...

foreach ($mArray as $username) {
  foreach ($mArray[$username] as $customerName) {
    foreach ($mArray[$username][$customerName] as $project ) {
        echo '<'.$username.'><'.$customerName.'><'.$project.'><hours>'.
           $mArray[$username][$customerName][$project].'</hours></'.$project.'>
           </'.$customerName.'></'.$username.'>';
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

这个嵌套的foreach不起作用.有人可以给我一些关于如何遍历这个结构的技巧吗?谢谢你的阅读!

更新:根据我迄今收到的评论(并感谢所有人),我有:

foreach ($mArray as $userKey => $username) {
  foreach ($mArray[$userKey] as $customerKey => $customerName) {
    foreach ($mArray[$userKey][$customerKey] as $projectKey => $projectName) {
      echo '<name>'.$userKey.'</name>';
      echo "\n";
      echo '<customerName>'.$customerKey.'</customerName>';
      echo "\n";
      echo '<projectName>'.$projectKey.'</projectName>';
      echo "\n";
      echo '<hours>'.$mArray[$userKey][$customerKey][$projectKey].'</hours>';
      echo "\n";
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

现在只提供单次迭代(一行数据).

Mar*_*c B 5

Foreach语法是foreach($array as $value).您尝试将这些值用作数组键,但它们不是值 - 它们是子数组.你想要的是:

foreach($mArray as $username) {
   foreach($username as ...)
Run Code Online (Sandbox Code Playgroud)

要么

foreach($mArray as $key => $user) {
   foreach($mArray[$key] as ...)
Run Code Online (Sandbox Code Playgroud)