PHP多维数组的问题


PHP Trouble with multidimensional Arrays

我目前正试图从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

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

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

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

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']);
  }
}

尝试为每个设备创建一个新阵列:

$last24hoursarray[$row['DeviceName']] = new array($row['HistoryRec']);

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

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

switch1 = array(issue1, issue2, issue3);
switch2 = array(issue1);
multi = array(switch1, switch2);
issue = multi[0][1];  // issue2