【问题标题】:Arrays value being treated differently than manual input数组值的处理方式与手动输入不同
【发布时间】:2016-01-23 11:31:48
【问题描述】:

我有这个功能:

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;

【问题讨论】:

  • 你的静态函数查找代码在哪里? 1 不是对象(原始数据类型),所以我感觉它与输入的问题无关,还有你的数组是什么值?
  • 可能是 Item::find() 内部的问题。但在此之前,试试这个: $id=1;然后尝试调用 Item::find($id)。如果您仍然遇到问题,请给我们 Item::find() 的代码
  • find() 是 Eloquent 中用于 Laravel 框架的函数。它将一个整数作为 ID,并使用该 ID 从数据库中提取记录。手动在 find() 中输入 1 就可以了。但是当我从我的多维数组中获取整数 1 时,就不行了。希望这是有道理的
  • @DarrylChapman 你试过 $id=1 吗?尝试 var_dump($formattedArray[$key][0]) 以了解您获得的值的类型
  • var_dump($id),然后。确切地看到该值是什么。也许是1<br /> 什么的

标签: php mysql arrays laravel eloquent


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2022-06-10
    • 2017-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-14
    • 2019-01-15
    相关资源
    最近更新 更多