количество массивов слияния php - PullRequest
0 голосов
/ 27 сентября 2011

это мой рабочий код:

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

1 Ответ

0 голосов
/ 27 сентября 2011

есть ли у вас цикл вне этого, который похож на 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...