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