为什么我的值总是在 laravel 中作为字符串?
why my value is always taking as string in laravel?
我正在接受用户的请求并将其存储在 $request
变量中基于此我正在获取一些关键值直到它工作正常,在此之后我将这个值传递给开关盒声明它的作用意味着如果值为 double/float
类型,它将在该情况下执行一些操作,对于 string and integer
也类似。但即使我传递 integer or double/float
类型,它也会进入 string
只有案例。你能帮我看看我错在哪里吗..
my 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
}
}
传递的值是什么,它被认为是字符串类型,我只需要解决这个问题,请帮助我..
我认为 $request->amount
总是 return 一个字符串,因为 URL 查询参数也是字符串。
is_numeric()
查找变量是数字还是 数字字符串 。在您的情况下,它是 returning 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
}
或者,如果 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;
我正在接受用户的请求并将其存储在 $request
变量中基于此我正在获取一些关键值直到它工作正常,在此之后我将这个值传递给开关盒声明它的作用意味着如果值为 double/float
类型,它将在该情况下执行一些操作,对于 string and integer
也类似。但即使我传递 integer or double/float
类型,它也会进入 string
只有案例。你能帮我看看我错在哪里吗..
my 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
}
}
传递的值是什么,它被认为是字符串类型,我只需要解决这个问题,请帮助我..
我认为 $request->amount
总是 return 一个字符串,因为 URL 查询参数也是字符串。
is_numeric()
查找变量是数字还是 数字字符串 。在您的情况下,它是 returning 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
}
或者,如果 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;