通过foreach循环php将数据库信息存储在多维关联数组中


Store database information in multidimensional associative array via foreach loop php

Howdie do,

我有一组从数据库返回的设备。每个设备都有一个主机名,如果该主机名是打开的,它会检查设备的型号和描述。如果它与预设的设备列表匹配,它需要增加计数器,并将$desc、$model和计数器存储在多维数组中。

我以前从未像这样在飞行中设置过多维阵列,所以非常感谢任何帮助

我的代码如下:

$servers = array();
foreach($devices as $device)
{
    $model = $device['model'];
    $host = $device['hostname'];
    $desc = $device['description'];
    $R410Model;
    $R410Desc;
    if($host == 'OPEN')
    {
        if (($model == 'DELL R410') && ($desc == "Dual Xeon X5650 Hexacore 2.66 GHz"))
        {
            $R410HexCoreE5650Count++;
            $R410Model = $model;
            $R410Desc = $desc;
        }
     }
}
$servers[] = array('Dell R410 Dual Xeon X5650 Hexacore 2.66 GHz' => array('Model' =>$R410Model, 'Description' =>$R410Desc,'Counter' => $R410HexCoreE5650Count));

然而,一旦我从子阵列打印计数器,我就看不到任何返回的数据:

print "<table class='table table-condensed table-hover'>";
print "<tr>";
print       "<td class='title'>Number of Open R410s Dual Xeon X5650 Hexacore 2.66 GHz</td>";
foreach ($servers as $server)
{
    print "<td>"; 
    print $server['Dell R410 Dual Xeon X5650 Hexacore 2.66 GHz']['Counter']; 
    print "</td>";
}
print   "</tr>";
print "</table>";

编辑:根据评论,我已经更新了代码,现在它正在显示数据。然而,它显示的是导致最终计数的每个数字,而不仅仅是最终计数。

编辑:我已经修复了重复的计数和向上计数。使用修复程序更新了代码。只需将数组语句移动到foreach循环之外。此外,创建了临时变量来存储模型和desc,然后我将其传递给创建多维数组

构建它的方式,必须这样引用它:

$server['Dell R410 Dual Xeon X5650 Hexacore 2.66 GHz']['Counter'];

但你应该问,为什么要加上大大的长"戴尔…"每个条目的密钥?

在你建立你的阵列后,这样做:

echo "<pre>".print_r($servers,true)."</pre>";

然后您将看到您是如何真正构建阵列的。

(编辑:或者将其转储为json并查看,但无论哪种方式,您都可以更简单地构建数组。)

您的打印语句丢失<td> </td>标签。

print "<table class='table table-condensed table-hover'>";
print "<tr>";
print "<td class='title'>Number of Open R410s Dual Xeon X5650 Hexacore 2.66 GHz ";
foreach ($servers as $server)
{
 print $server['Counter'];
}
echo "</td>";
print   "</tr>";
print "</table>";