這可以用一個簡單的if-else
塊來完成。關於如何構建它的唯一選擇歸結於如果您想在if
表達式中使用一個或兩個條件。
方法#1:(Output Demo)(Calculation Demo) 「單一的條件」
$grades=array(-4,-1,0,1,6,10,70,99,100,101,105,110);
foreach($grades as $grade){
if(($grade+1)*(101-$grade) > 0){ // ($grade minus negative [lower limit])*([upper limit] plus $grad)
$validGrades[] = $grade;
}else{
$invalidGrades[] = $grade;
}
}
var_export($validGrades);
echo "\n---\n";
var_export($invalidGrades);
方法#2:(Output Demo) 「雙條件」
$grades=array(-4,-1,0,1,6,10,70,99,100,101,105,110);
foreach($grades as $grade){
if($grade<0 || $grade>100){
$validGrades[] = $grade;
}else{
$invalidGrades[] = $grade;
}
}
var_export($validGrades);
echo "\n---\n";
var_export($invalidGrades);
輸出(從任一方法)
array (
0 => -4,
1 => -1,
2 => 101,
3 => 105,
4 => 110,
)
---
array (
0 => 0,
1 => 1,
2 => 6,
3 => 10,
4 => 70,
5 => 99,
6 => 100,
)
*備註:
這兩種方法的效率之間會有不明顯的差異;這純粹是示範。
「雙重條件」也可以使用「And」邏輯運算符(&&
)作爲if($grade<=100 && $grade>=0){
寫入,具有相同的效果。
由於通/失敗比較在if
表達式確定,也沒有必要使用一個elseif
表達 - 這將是多餘的。
foreach()
是一個比較合適的構造,可以與for
進行循環,因爲可以避免調用count()
函數。這也可以防止您在嘗試通過索引訪問成績時出現編碼錯誤。
調用array_push()
(如其他答案所做的那樣)是不必要的開銷 - 而不是實際上會影響您的應用程序。我希望儘可能避免函數調用。使用[]
語法是array_push()
的無功能替代方法。
'$ i'是你的計數器,你可能想存儲'$ grades [$ i]'來代替。 – Augwa