如何在PHP中将stdClass对象转换为int

如何在PHP中将stdClass对象转换为int,php,mysql,laravel,api,Php,Mysql,Laravel,Api,我想用用户id搜索我的数据库并获取金额值(int类型) 但是它不起作用,它总是会进入“如果不知道$money有多大”你最好改变查询,这样你就只能得到你要找的用户的值 $amount = DB::table('user_check')->where('user_id', $user)->pluck('amount'); 或者如果金额是数组而不是单个值(取决于版本) 或 您最好更改查询,以便只获取您要查找的用户的值 $amount = DB::table('user_check')-&

我想用用户id搜索我的数据库并获取金额值(int类型)


但是它不起作用,它总是会进入“如果不知道$money有多大”

你最好改变查询,这样你就只能得到你要找的用户的值

$amount = DB::table('user_check')->where('user_id', $user)->pluck('amount');
或者如果金额是数组而不是单个值(取决于版本)


您最好更改查询,以便只获取您要查找的用户的值

$amount = DB::table('user_check')->where('user_id', $user)->pluck('amount');
或者如果金额是数组而不是单个值(取决于版本)

如果值为“false”、“null”或“0”,则(int)将返回0。我打赌,如果请求输入未设置或格式不正确,您不希望通过该查询搜索ID为0的用户

让我们清理代码:
$userId=request()->get('user');
$money=(int)request()->get('money');
#(int)如果请求(“金钱”)未随请求一起发送,则此处为0
#所以把它放在这里是有意义的。
$userCheck=DB::table('user_check')->select('amount')
->其中('user_id',$userId)
->第一个();
#->first();如果要返回单行项目
#->get();如果要返回多个项,此项将返回集合(数组)
#您需要使用foreach或任何数组函数来相应地处理它
为什么需要
$array=json\u decode(json\u encode($data),True)

if($userCheck->amount>$money){
返回响应(['user ok'=>$userCheck,'money'=>$money]);
}否则{
返回响应(“用户不正常”);
}
现在我假设您使用(int)来获取发送数据的整数值,实际上不需要,在验证的情况下,您需要单独进行验证,如下所示:

如果它在控制器中
$this->validate($request[
'user'=>'required |存在:用户检查,id',
“货币”=>“整数”
]);
如果要在其他地方进行验证,可以:
$validator=validator::make($request->all()[
'user'=>'required |存在:用户检查,id',
“货币”=>“整数”
]);
#检查它是否失败
如果($validator->fails()){
#验证程序失败,请停止并返回错误
返回响应()->with($validator->getMessageBag());
}
#这将验证请求并确保其具有“用户”
#并且该“user”存在于具有该ID的“user\u check”表中
#“钱”是一个整数
如果您愿意验证,可以将该代码放在
DB::table()…

我希望这能解决你的问题,让我知道进展如何

如果值为“false”、“null”或“0”,则(int)将返回0。我打赌,如果请求输入未设置或格式不正确,您不希望通过该查询搜索ID为0的用户

让我们清理代码:
$userId=request()->get('user');
$money=(int)request()->get('money');
#(int)如果请求(“金钱”)未随请求一起发送,则此处为0
#所以把它放在这里是有意义的。
$userCheck=DB::table('user_check')->select('amount')
->其中('user_id',$userId)
->第一个();
#->first();如果要返回单行项目
#->get();如果要返回多个项,此项将返回集合(数组)
#您需要使用foreach或任何数组函数来相应地处理它
为什么需要
$array=json\u decode(json\u encode($data),True)

if($userCheck->amount>$money){
返回响应(['user ok'=>$userCheck,'money'=>$money]);
}否则{
返回响应(“用户不正常”);
}
现在我假设您使用(int)来获取发送数据的整数值,实际上不需要,在验证的情况下,您需要单独进行验证,如下所示:

如果它在控制器中
$this->validate($request[
'user'=>'required |存在:用户检查,id',
“货币”=>“整数”
]);
如果要在其他地方进行验证,可以:
$validator=validator::make($request->all()[
'user'=>'required |存在:用户检查,id',
“货币”=>“整数”
]);
#检查它是否失败
如果($validator->fails()){
#验证程序失败,请停止并返回错误
返回响应()->with($validator->getMessageBag());
}
#这将验证请求并确保其具有“用户”
#并且该“user”存在于具有该ID的“user\u check”表中
#“钱”是一个整数
如果您愿意验证,可以将该代码放在
DB::table()…


我希望这能解决您的问题,让我知道它是如何进行的。

当您只检查数组的第一个元素时,为什么还要麻烦创建数组?@Sherif我该怎么办?我不知道。你打算在这里发生什么?如果你
var_dump($array[0]),你会得到什么
日志::信息($array[0])?@Sherif如果我想检查,如果钱大于金额,那么显示并保存(金额-金钱)当你只检查数组的第一个元素时,为什么还要麻烦创建一个数组?@Sherif我该怎么做?我不知道。你打算在这里发生什么?如果你
var_dump($array[0]),你会得到什么
日志::信息($array[0])
?@sher如果我想检查,如果money大于amount,那么show and save(amount-money)不会
pluck()
返回数组吗?正如我所记得的,从一行中获取一个值是
->value('columnName')
。我试图记住不同版本之间的差异。我有4.2,其中pull返回一个值。我认为他们将
pull
重命名为
value
,并将
列表改为
pull
。V4.x已经很老了:-)@PaulSpiegel哈,我不知道吗。升级在我的待办事项清单上。我已经用另一种方法更新了答案。请看区别:和。它在4.2中是
pull
,在5.8中是
value
不会
pull()
返回数组吗?我记得-它是
->value('columnName')
$amount = DB::table('user_check')->where('user_id', $user)->value('amount');
$user = DB::table('user_check')->where('user_id', $user)->first();
$amount = $user ? $user->amount : 0;