php - 数组值的处理方式与手动输入不同

标签 php mysql arrays laravel eloquent

我有这个功能:

public function getReward($formattedArray, $key){
    $id = $formattedArray[$key][0];
    //dd($id); //Returns 1
    $reward = Item::find($id); 
    return $reward;
}

问题部分是:

$reward = Item::find($id); 

我有 dd() id 变量,它返回预期值 1,然后在最后的静态查找函数中使用该值。然后,我使用此函数“尝试获取非对象的属性”收到错误。

然后我这样做:

$reward = Item::find($id); //Changed to...
$reward = Item::find(1);

唯一的区别是我手动将整数 1 输入到静态查找函数中。该代码运行完美,没有错误,并且我能够访问返回的对象。

工作示例:

$reward = Item::find(1); 
return $reward;

工作示例:

$reward = Item::find("1"); 
return $reward;

非工作示例:

$reward = Item::find($formattedArray[$key][0]); 
return $reward;

我也尝试过转换为整数,如下所示:

$id = $formattedArray[$key][0];
    $idInt = (int) $id;
    $reward = Item::find($idInt);
    return $reward;

最佳答案

我认为您得到的 $id 不是对象类型。 要确认使用 var_dump(),因为您的 Item::find() 函数尝试访问某些不可访问的字段。

关于php - 数组值的处理方式与手动输入不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33310647/

相关文章:

javascript - 我希望在我的 javascript 数组上使用 reduce 方法

arrays - 有没有办法访问向量中的索引

php - 在str_replace中使用sql查询

php - 我该如何修复 "Error: Formulae found in multiple taps"?

php - 摆脱 CodeIgniter URL 中的 Index.php

mySQL 追加到列表

javascript - 每个循环中的有序 JavaScript Promise

php - 您怎么知道要在闭包中放入哪些参数/参数?

PHP MySQL 选择日期时间值在过去 n 分钟内的行

mysql - 命名 fifo 管道是否使用磁盘写入和读取?