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)
现在只提供单次迭代(一行数据).
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)