1

私はPHPに比較的慣れていないので、問題の解決にご協力いただければ幸いです。計時のためにデータベースから配列にデータを選択しています。最終的に、特定の顧客のプロジェクトに費やされた合計時間数を計算したいと思います。

多次元配列を設定するコードは次のとおりです。..。

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

  $mArray[$name][$customer][$project] += $hours;  
}

..。

$ 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.'>';
    }
  }
}

このネストされた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";
    }
  }
}

これは現在、単一の反復(1行のデータ)のみを提供しています。

4

1 に答える 1

5

Foreach構文はforeach($array as $value)です。これらの値を配列キーとして使用しようとしていますが、値ではなく、子配列です。必要なのは次のいずれかです。

foreach($mArray as $username) {
   foreach($username as ...)

また

foreach($mArray as $key => $user) {
   foreach($mArray[$key] as ...)
于 2012-09-12T19:38:15.593 に答える