値が異なる配列に計算された後に値をプッシュしようとしています min($arrival)
がwhileループに入った後に設定解除されていることがわかるため、最初の3つの到着に対してすべて正常に動作しますが、 ("4")
に達し、($minCC
が> 1ではないため)else文にはなりません。
if文またはwhileループに何か問題があるかどうかわかりませんが、何が間違っているかを理解するのに役立つ必要があります。私はあなたが非常に慎重にコードレビュー、しかし、私はすでに参照すると、あなたは解除($ハッシュ[i])とすることを信じているようにそれはそうでなかったdo whileループがうまく動作しない
$alpha = ["A","B","C","D"];
$arrival = ["1","1","1","4"];
$cpu = ["10","2","2","4"];
$final = array(); //start + finish
$inCC = array(); //final cc of inline related to falp
$outCC = array(); //final cc of inline2
$falp = array(); // final a
$start = 0;
$tempc = array(); // => temp for leftc
$tempa = array(); // => temp for lefta
$leftc = array(); // =>merge inCC & outCC
$lefta = array(); // =>merge falp
$hashed = mysql_query("SELECT Alpha FROM fcfs", $connection);
while($row = mysql_fetch_assoc($hashed)){
$hash[] = $row['Alpha'];
}
/////test
do{
$min = min($arrival);
$findmin = mysql_query("SELECT Alpha,CPU FROM fcfs WHERE Arrival='$min'", $connection);
while($fm = mysql_fetch_assoc($findmin)){
$ALPHA[] = $fm['Alpha'];
$minCC[] = $fm['CPU'];
}
/*while(count($minCC) > 0){*/
$keys = array_keys($arrival, $min);
foreach($keys as $k)
{
unset($arrival[$k]);
}
$min2 = min($arrival);
$diff = $min2 - $min;
if(count($minCC) > 1){ /// else fasfas el min of mincc
for($i=0; $i<$diff; $i++){
if($minCC[$i] == 1){
array_push($inCC, $minCC[$i]);
array_push($falp, $ALPHA[$i]);
unset($minCC[$i]);
unset($ALPHA[$i]);
unset($hash[$i]);
}else{
array_push($inCC, 1);
array_push($tempc, ($minCC[$i] - 1));
array_push($tempa, $ALPHA[$i]);
unset($minCC[$i]);
unset($ALPHA[$i]);
unset($hash[$i]);
}
}
}else{
array_push($inCC, $minCC[0]);
array_push($falp, $ALPHA[0]);
unset($minCC[0]);
unset($ALPHA[0]);
unset($hash[0]);
}
}while(count($hash) > 0); <=== think this goes infinite and page stop working
/* testing each array */
print_r($hash);
echo '<br>';
print_r($tempc);
echo '<br>';
print_r($tempa);
echo '<br>';
print_r($inCC);
コード行のインデントを修正してください。それはあなたが論理、構造を理解するのに役立ちます。私は自分であなたのコードを見ればそれを得ることができません... – arkascha