Howdie do,
我有一组从数据库返回的设备。每个设备都有一个主机名,如果该主机名是打开的,它会检查设备的型号和描述。如果它与预设的设备列表匹配,则需要递增计数器并将$ desc,$ model和counter存储在多维数组中。
我从来没有像这样设置多维数组,所以任何帮助都表示赞赏
我的代码如下:
$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,然后我将其传递给我的多维数组的创建
答案 0 :(得分:1)
你构建它的方式,你必须像这样引用它:
$server['Dell R410 Dual Xeon X5650 Hexacore 2.66 GHz']['Counter'];
但你应该问为什么要在每个条目中添加一个很长的“戴尔......”键?
在构建阵列后,执行以下操作:
echo "<pre>".print_r($servers,true)."</pre>";
然后你会看到你是如何构建阵列的。
(编辑:或将其转储为json并查看,但无论哪种方式,您可能都可以更简单地构建数组..)
答案 1 :(得分:1)
您的打印声明丢失了
<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>";