【问题标题】:json_decode() expects parameter 1 to be string, array given, how to update all row (specific column) [duplicate]json_decode() 期望参数 1 是字符串,给定数组,如何更新所有行(特定列)[重复]
【发布时间】:2021-06-16 09:06:17
【问题描述】:

我正在尝试创建一个排序系统(拖放)。但问题是它在需要字符串时获取数组。我在控制器中的代码是:

public function sort(Request $request){
 
  $imageids = request()->input("imageids");

  $data = json_decode($imageids,true);
  
    if (is_array($data)) {
        foreach ($data as $value) {
            $taskItem = Task::find($value['id']);
            $taskItem->priority = $value['priority'];
            
            $taskItem->save();
        }
    } else {
        $taskItem = Task::find(request()->input("id"));
        $taskItem->priority = request()->input("priority");
         
        $taskItem->save();
    }
     
}

【问题讨论】:

  • 可能值得将您的is_array() 支票移到json_decode 上方,然后以这种方式处理它。否则,您需要更改此页面的“发布”方式,以便以 json 字符串而不是数组的形式发布...
  • 仍然出现同样的错误

标签: php ajax laravel


【解决方案1】:

您的request()->input("imageids") 是返回数组,因此您不需要json_decode。另一种使用条件如下:

if(is_string($imageids))
{
  $data = json_decode($imageids,true);
}
else
{
  $data = $imageids;

}

【讨论】:

  • 现在是“从空值创建默认对象”
  • 我其实需要数组,这样我就可以更新所有行
猜你喜欢
  • 2015-07-12
  • 1970-01-01
  • 2017-01-11
  • 2015-06-10
  • 2017-07-12
  • 2019-09-05
  • 2021-11-13
  • 2020-01-27
相关资源
最近更新 更多