这是我的工作代码:
while ($list = mysql_fetch_assoc($result)) {
$sql2 = "SELECT * FROM stock WHERE gID=".$list['gID'];
$result2 = mysql_query($sql2, $conn) or trigger_error("SQL", E_USER_ERROR);
$totalgid = mysql_num_rows($result2);
$sql3 = "SELECT * FROM stockcount WHERE gID=".$list['gID']." AND date='".$list['date']."' AND affectstock=1";
$result3 = mysql_query($sql3, $conn) or trigger_error("SQL", E_USER_ERROR);
$dategid = mysql_num_rows($result3);
$calculategid = $totalgid - $dategid;
if ($calculategid < 0) {
if(isset($arr[$list['date']][$list['gID']])){
//increment
} else {
//set to initial value of 1
$arr[$list['date']][$list['gID']]=$calculategid;
}
}
}
print_r($arr);
答案 0 :(得分:0)
你有一个像foreach($someList as $list){ ...do this code... }
这样的循环吗?我只是问,因为你永远不应该有重复的值,因为如果你试图将值设置为相同的确切键,将覆盖以前的值。我只能根据您发布的代码假设您将此数组附加到循环内的另一个数组中。如果是这种情况,这样的事情可能会有所帮助:
//initialize the output array
$arr = array();
//loop through somelist
foreach($someList as $list){
//check if the key exists, if so increment.
if(isset($arr[$list['date']][$list['gID']])){
//increment
$arr[$list['date']][$list['gID']]++;
} else {
//set to initial value of 1
$arr[$list['date']][$list['gID']]=1;
}
}
print_r($arr);
基本上,只检查键isset()
是否如此,如果没有设置为1则增加。