我正在尝试从一些JSON数据中选择最后一个元素,但我得到了一个“Undefined Method”返回。 我的代码是从特定订单获取$ order_serialized数据,然后在该JSON数据中选择$ last_item并将其插入dd()以便立即进行测试。如果有人能够指出或解释我哪里出错了,我将非常感激!非常感谢你!
控制器:
public function getEdit($id){
$order = Order::where('id', '=', $id);
if($order->count()) {
$order = $order->first();
$order_serialized = json_decode($order->order_serialized);
$last_item = $order_serialized->last();
dd($last_item);
foreach($order->order_serialized as $key => $value){
$order->$key = $value;
}
return View::make('orders.edit')
->with('order', $order);
/*->with('last_item', $last_item);*/
} else {
return App::abort(404);
}
}
答案 0 :(得分:1)
json_decode
将返回一个没有任何方法的stdClass
对象,因此调用$order_serialized->last()
会给你"未定义的方法"错误。为了在某个类上调用last
方法,您将不得不实例化该类。我不知道如何将JSON解码为PHP中的特定类。
答案 1 :(得分:1)
当你这样做时
$order_serialized = json_decode($order->order_serialized);
您返回标准类对象,因此它没有任何last()
方法。
我会这样做:
$order_serialized = json_decode($order->order_serialized, true);
$last_item = array_pop($order_serialized);
将true
作为第二个参数发送到json_decode
将为您提供一个数组而不是一个对象。