我正在接受來自用戶的請求并將其存盤在$request基于此的變數中我正在獲取一些關鍵值直到這個它作業正常,在此之后我將此值傳遞給 switch case 陳述句它意味著如果值是double/float型別它會在那種情況下執行一些操作,同樣也適用于。string and integer但即使我傳遞integer or double/float型別,它也只會處理這種string情況。請你幫我看看我哪里弄錯了..
我的 api {url}/details?limit=25&amount=99.9有時金額是99 or NinteyNine
Public function run(){
$request=new Request();
$value=$request->amount;
switch(gettype($value)){
case 'double':
//perform some logic if type is double
break;
case 'string':
//perform some logic if type is string
break;
default:
//perform some logic if type is Integer
}
}
無論傳遞什么值,它都被視為字串型別,只有我需要解決此問題,請幫助我..
uj5u.com熱心網友回復:
我認為$request->amount總是會回傳一個字串,因為 URL 查詢引數也是字串。
is_numeric()查找變數是數字還是數字字串。在您的情況下,它回傳 true 因為它是一個數字字串。
你可以這樣做:
function amountType(string $amount): string {
if (is_numeric($amount)) {
if ((int) $amount == (float) $amount) {
return "int";
}
return "float";
}
return "string";
}
$type = amountType($request->amount);
switch($type) {
case 'float':
//perform some logic if type is double
break;
case 'string':
//perform some logic if type is string
break;
case 'int':
//perform some logic if type is Integer
break;
default:
// Invalid type
}
片段:https : //3v4l.org/K9XVB
或者,如果float和int輸入的行為相同,您也可以這樣做:
$amount = $request->amount;
if (is_numeric($amount)) {
$numericAmount = (float) $amount;
// Perform some logic if input is numeric
return;
}
// Perform some logic if input is string
return;
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/361931.html
