【问题标题】:PHP Array - Return specific elements of array and display them on one linePHP Array - 返回数组的特定元素并将它们显示在一行上
【发布时间】:2015-03-16 21:30:08
【问题描述】:

我已经准备好为这个发疯了。我似乎无法弄清楚如何打印出数组的元素,然后将所有结果放在一行上(带有特定的输出)。

这是我的数组数据(通过foreach 语句运行后:

Array
(
    [hostname] => server01
    [server_id] => 4
    [disk_mountpoint] => /
    [disk_datetime] => 1426395600
    [disk_device] => /dev/mapper/VolGroup00-LogVol00
    [disk_capacity] => 15G
    [disk_used] => 5.3G
)
Array
(
    [hostname] => server01
    [server_id] => 4
    [disk_mountpoint] => /var
    [disk_datetime] => 1426395600
    [disk_device] => /dev/mapper/VolGroup01-LogVol00
    [disk_capacity] => 107G
    [disk_used] => 52G
)
Array
(
    [hostname] => server01
    [server_id] => 4
    [disk_mountpoint] => /opt
    [disk_datetime] => 1426395600
    [disk_device] => /dev/mapper/VolGroup02-LogVol00
    [disk_capacity] => 156G
    [disk_used] => 127G
)

这是我的foreach 声明:

foreach ($storage_report as $item) {
                print_r($item);
}

我花了几个小时试图围绕一个多维数组以及查看其他人在 StackOverflow 上的一些问题,但似乎没有什么适合我正在尝试做的事情。

顺便说一句,上面的数组实际上是从 MySQL 查询中输出的,它只返回一个唯一的hostname,因此它与元素具有相同的主机名,这是正确的(与 server_id 相同)。

我什至尝试了一个嵌套的foreach 循环,但效果不佳,我再次感到困惑,所以我不想在这里发布。

基本上,有了上面的数据,我希望输出看起来像:

$disk_mountpoint = $disk_used

话虽如此,最终输出(如果您要解析我刚刚写的内容),最终输出将如下所示:

/ = 5.3G
/var = 52G
/opt = 127G

我觉得我把事情复杂化了,想知道是否有人能指出我正确的方向并帮助我。

谢谢! 画了

【问题讨论】:

    标签: php arrays multidimensional-array foreach


    【解决方案1】:

    嗯.. 只是:

    foreach ($storage_report as $item) {
        echo $item['disk_mountpoint'] .'='.$item['disk_used'];
    
    }
    

    【讨论】:

    • 该死...我告诉过你我把事情复杂化了。我什至在我的代码中的其他地方使用了另一组数据。我想我把事情复杂化了,因为我最初是从 mysql 获取所有数据,所以我按server_id 分组,所以它变成了一个多维数组。因此,我一直在以这种心态思考,而不是仅仅看一个明显简单的单一精神阵列。
    • 尤其是在盯着代码看了一天之后。您也可以查看 implode() 来了解这种 shiz
    • @Dagon 他做到了,并且饶了我们所有人。
    【解决方案2】:

    是的,复杂的人。你就不能这样做吗

    foreach ($storage_report as $item) {
       echo $item['disk_mountpoint']."=".$item['disk_used'];
    }
    

    【讨论】:

    • 是的,我评论了@Dagon 的回答。我有两个不同的想法,只是不知所措。
    【解决方案3】:

    如果是我不明白,那么:

    foreach ($storage_report as $item) 
    {
          if (isset($item['disk_mountpoint']) && isset($item['disk_used']))
          {
              echo $item['disk_mountpoint'] .'='. $item['disk_used']; 
          }
    }
    

    这将迭代整个集合,并且只有在设置了每个单元格时才会读取它的内容。

    【讨论】:

    • 尽管这段代码有帮助,但请多解释一下。
    • 哪部分需要说明?我认为 $item 可以有空单元格,如 disk_mountpoint 或 disk_used 如果无法读取。
    猜你喜欢
    • 2017-12-01
    • 2023-04-03
    • 2011-05-16
    • 2019-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多