各位先進大家好
小弟對於php還是國小階段
正在做PHP5升到PHP8
目前遇到一個問題
前人留下的一段Code如下
if(isset($_GET['kind']) && $_GET['kind']==1 || $_GET['kind']==2 || $_GET['kind']==3){
$kind=$_GET['kind']+1;
}else{
$kind=2;
}
$kabout="about".$kind;
升到PHP8後出現以下的Error
Warning: Undefined array key "kind" in /Applications/XAMPP/xamppfiles/var/web/csweb/about_foundation.php on line 45
小弟查了許多資料
可以用isset來避免
但小弟每個kind都加卻不行
不知各位先進是否可以指點小弟要如何改寫這段Code?
在此先謝謝各位先進
在 PHP 8 中,若使用$_GET['kind']
且未確認是否存在,可能會導致未定義的索引錯誤。為了避免這種錯誤,可以使用??
來提供一個預設值,或者使用 filter_input
函數來確認輸入的存在性。
以下是修正後的程式碼:
if(isset($_GET['kind']) && ($_GET['kind']==1 || $_GET['kind']==2 || $_GET['kind']==3)){
$kind=$_GET['kind']+1;
}else{
$kind=2;
}
$kabout="about".($kind ?? 2);
或者使用 filter_input:
$kind = filter_input(INPUT_GET, 'kind', FILTER_VALIDATE_INT, ['options' => ['default' => 2]]);
if ($kind === false || !in_array($kind, [1, 2, 3])) {
$kind = 2;
}
$kabout = "about" . ($kind + 1);