【发布时间】:2015-04-06 01:45:37
【问题描述】:
我遇到了foreach 和 PHP 中嵌套的 arrays 的问题。我得到了整个foreach ($var as $newvar) 等,但我遇到了一个我似乎无法弄清楚/可视化的新要求。这是一个简单的查询:
select systems.hostname, capacity_disk.server_id, capacity_disk.disk_mountpoint, capacity_disk.disk_datetime, capacity_disk.disk_device, capacity_disk.disk_capacity, capacity_disk.disk_used, capacity_disk.disk_used_percent from systems left join capacity_disk on systems.id=capacity_disk.server_id where capacity_disk.disk_datetime = UNIX_TIMESTAMP(subdate(current_date,3)) and systems.id=44;
我得到以下结果:
+--------------------------------+-----------+-----------------+---------------+----------------------------+---------------+------------+-------------------+
| hostname | server_id | disk_mountpoint | disk_datetime | disk_device | disk_capacity | disk_used | disk_used_percent |
+--------------------------------+-----------+-----------------+---------------+----------------------------+---------------+------------+-------------------+
| server01.example.org | 44 | /backup | 1427950800 | /dev/mapper/storage-backup | 1870561476 | 1437491340 | 81% |
| server01.example.org | 44 | / | 1427950800 | /dev/mapper/storage-root | 15126920 | 4286048 | 30% |
+--------------------------------+-----------+-----------------+---------------+----------------------------+---------------+------------+-------------------+
2 rows in set (0.01 sec)
所有这些数据都是预期的并且正在发挥作用。
问题是我无法弄清楚为每个主机名运行 foreach 的 PHP 逻辑,然后遍历每个 disk_mountpoint。显然,第一部分很简单:
$query = $db->Execute("select systems.hostname, capacity_disk.server_id, capacity_disk.disk_mountpoint, capacity_disk.disk_datetime, capacity_disk.disk_device, capacity_disk.disk_capacity, capacity_disk.disk_used, capacity_disk.disk_used_percent from systems left join capacity_disk on systems.id=capacity_disk.server_id where capacity_disk.disk_datetime = UNIX_TIMESTAMP(subdate(current_date,3)) and systems.id=44;");
foreach ($query as $server) {
}
此时我可以通过$server['hostname'] 引用主机名——这也很好。问题是 - 对于每个 $server['hostname'] 项目(此结果集中的 1 个服务器,但我还想遍历 2 个项目),我想遍历两个 disk_mountpoint 并能够操作数据库中表行中的数据。另一个问题是我需要能够报告我的所有项目并返回以下格式的内容:
'`disk_mountpoint`','`disk_capacity`','`disk_used_percent`'
因此,这两个项目的示例输出将类似于以下内容:
'/backup','1870561476','81%'
'/','15126920','30%'
我从来没有在 PHP 中这样做过,并且很难弄清楚如何将逻辑放入代码中。
【问题讨论】:
标签: php arrays for-loop foreach