1

我目前正在尝试从 mysql 数据库中提取数据,然后使用设备名称作为键将其放入多维数组中。

我遇到的问题是,每次我遍历结果时,我使用的代码都会杀死最后一项并替换它。

这是代码;

##sql connection##
$result = mysql_query(SELECT Device.DeviceID, Device.DeviceName, History.HistoryRec, History.HistoryDetectedDate from Device JOIN History ON Device.DeviceID=History.DeviceID WHERE History.Active_LastRound = 1 AND History.DetectedDate <= $hrs);
if (!$result){
die('invaild query:' . mysql_error());

while($row = mysql_fetch_array($result))
{
$last24hoursarray[$row['DeviceName']] = array($row['HistoryRec']);
}

所以我遇到的问题是我的结果集有多个具有相同设备名称的记录,我无法弄清楚如何将它们放入数组中,以便它们不会覆盖最后一项

例如我想要

switch1 => issue1
switch1 => issue2
switch1 => issue3
switch2 => issue1
etc

但我得到的是;

switch1 => issue3
switch2 => issue1

提前致谢。这是我写的第一个 PHP,所以请温柔:D

4

5 回答 5

5

PHP 数组键是唯一的,因此您无法在同一个键下存储多个值,请尝试以下操作:

while($row = mysql_fetch_array($result)) {
        $last24hoursarray[$row['DeviceName']][] = $row['HistoryRec'];
}
于 2012-08-20T14:52:25.670 回答
2

首先,数组只允许键的单个值。你将无法获得。

switch1 => issue1
switch1 => issue2
switch1 => issue3

你可以得到

switch1 => [issue1, issue2, issue3]

我没有花时间测试代码,但它会是这样的:

while($row = mysql_fetch_array($result)){
  if (array_key_exists ( $row['DeviceName'] , $last24hoursarray ){
    // append to existing issue.
    $last24hoursarray[$row['DeviceName']][] = array($row['HistoryRec']);
  } else{
    //No device name, create the array with issue.
    $last24hoursarray[$row['DeviceName']] = array($row['HistoryRec']);
  }
}
于 2012-08-20T15:06:22.797 回答
0

尝试为每个设备创建一个新数组:

$last24hoursarray[$row['DeviceName']] = new array($row['HistoryRec']);
于 2012-08-20T14:53:32.613 回答
0

这段代码不起作用的原因是 PHP 关联数组只存储数组的每个键的一个值。这样您就可以通过键查找唯一值,这就是关联数组的全部目的。Merca 示例中的代码应该很好用,因为它将为关联数组中的每个键创建一个值数组。

于 2012-08-20T14:56:04.670 回答
0

看起来您在这里使用的不是多维数组。多维数组更像这样:

switch1 = array(issue1, issue2, issue3);
switch2 = array(issue1);
multi = array(switch1, switch2);

issue = multi[0][1];  // issue2
于 2012-08-20T14:57:42.000 回答