【问题标题】:Store database information in multidimensional associative array via foreach loop php通过foreach循环php将数据库信息存储在多维关联数组中
【发布时间】:2014-10-06 16:15:22
【问题描述】:

你好,

我有一个从数据库返回的设备数组。每个设备都有一个主机名,如果该主机名是开放的,它会检查设备的型号和描述。如果它与预设的设备列表匹配,它需要递增计数器并将 $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>";

编辑:基于 cmets,我更新了代码,现在它正在显示数据。但是,它会显示导致最终计数的每个数字,而不仅仅是最终计数。

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

【问题讨论】:

    标签: php mysql arrays multidimensional-array


    【解决方案1】:

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

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

    但您应该问为什么要在每个条目中添加大而长的“Dell...”键?

    构建数组后,执行以下操作:

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

    然后你会看到你是如何真正构建你的数组的。

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

    【讨论】:

    • 之所以选择戴尔密钥是因为我有多个需要跟踪的服务器。例如。 I5、I7、Q9550
    • 感谢您解释我访问的方式不正确。现在的问题是它会显示导致最终计数的每个数字。如何让它只显示最终计数?
    • 您需要建模/映射您的数据,并了解您需要如何管理/显示和更新它
    【解决方案2】:

    您的打印声明丢失 &lt;td&gt; &lt;/td&gt; 标签。

    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>";
    

    【讨论】:

    • 谢谢。我完全错过了
    猜你喜欢
    • 2016-06-09
    • 2015-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多