Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/203.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过foreach循环php在多维关联数组中存储数据库信息_Php_Mysql_Arrays_Multidimensional Array - Fatal编程技术网

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

通过foreach循环php在多维关联数组中存储数据库信息,php,mysql,arrays,multidimensional-array,Php,Mysql,Arrays,Multidimensional Array,你好 我有一个从数据库返回的设备数组。每个设备都有一个主机名,如果该主机名是打开的,它会检查设备的型号和说明。如果它与预设的设备列表匹配,则需要递增计数器,并将$desc、$model和计数器存储在多维数组中 我以前从未像这样动态地设置多维数组,因此非常感谢您的帮助 我的代码如下: $servers = array(); foreach($devices as $device) { $model = $device['model']; $host = $device['hostn

你好

我有一个从数据库返回的设备数组。每个设备都有一个主机名,如果该主机名是打开的,它会检查设备的型号和说明。如果它与预设的设备列表匹配,则需要递增计数器,并将$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>";
print”“;
打印“”;
打印“开放式R410双Xeon X5650六芯2.66 GHz的数量”;
foreach($servers作为$server)
{
打印“”;
打印$server['Dell R410 Dual Xeon X5650 Hexacore 2.66 GHz']['Counter'];
打印“”;
}
打印“”;
打印“”;
编辑:根据注释,我已经更新了代码,现在它正在显示数据。但是,它会显示最终计数之前的每个数字,而不仅仅是最终计数


编辑:我已修复重复计数和递增计数。使用修复程序更新了代码。只需将array语句移到foreach循环之外。另外,创建临时变量来存储模型和描述,然后将其传递到多维数组的创建过程中,您必须像这样引用它:

$server['Dell R410 Dual Xeon X5650 Hexacore 2.66 GHz']['Counter'];
但你应该问,为什么要在每个条目中都添加一个长长的“Dell…”键

构建阵列后,请执行以下操作:

echo "<pre>".print_r($servers,true)."</pre>";
echo”“。打印($servers,true)。”;
然后,您将看到如何真正构建阵列


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

您的print语句缺失
标签

print”“;
打印“”;
打印“开放式R410双Xeon X5650六芯2.66 GHz的数量”;
foreach($servers作为$server)
{
打印$server['Counter'];
}
回声“;
打印“”;
打印“”;

使用Dell密钥的原因是我需要跟踪多台服务器。例如I5、I7、Q9550谢谢您解释我访问的方式不正确。现在的问题是,它显示最终计数之前的每个数字。如何使其仅显示最终计数?您需要对数据进行建模/映射,并了解如何管理/显示和更新数据谢谢。我完全错过了比赛
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>";