如何在laravel中获取数组的所有键值?

时间:2016-07-20 06:45:47

标签: json laravel

我没有使用foreach获取和数组的所有键值,它只给出了第一个键值。

$order_id = DB::table('order')->where('delivery_boy_id', $delivery_boy_id)->where('is_accept', 1)->whereRaw('delivery_completed_at < time_of_assignment')->get();    

当我运行此代码时,我得到two key value

 array:2 [0 => {#325
+"id": 37
+"order_id": 8261
+"delivery_boy_id": 8}1 => {#326
+"id": 38
+"order_id": 8261
+"delivery_boy_id": 8]

使用此json响应后,我的响应仅为one key value

foreach($order_id as $value){ $values = $value) }; 
$this->response['items'] = $order_id;
return json_encode($this->response);

2 个答案:

答案 0 :(得分:0)

Dd表示转储和死亡,因此它会停止执行。如果你为每个循环中的dd,你将只获得循环中的当前值(即第一个),因为它将停止执行,你将永远不会到达第二个循环。使用var_dump允许执行继续并转储变量。

如果您只是想将Json返回给用户,您只需返回查询结果,因为laravel会为您处理序列化。你不需要循环结果。请参阅文档:

https://laravel.com/docs/5.1/eloquent-serialization

您正在覆盖循环中的$ value。因此,每次通过for循环时,它都会用当前$值覆盖$ value,因此它只包含1个对象。您不需要手动进行序列化,请使用laravel辅助方法

同样在您的代码段中,您循环使用$ order,但查询结果是否已分配给$ order_id?我假设这是因为缩写了你的代码

答案 1 :(得分:0)

检查这个

    $order_id = DB::table('order')->where('delivery_boy_id', $delivery_boy_id)->where('is_accept', 1)->whereRaw('delivery_completed_at < time_of_assignment')->get();    

// return $order_id;(returns json array)
    $data = [];
    foreach($order_id as $order)
    {
        var_dump($order);
    //in first loop first array will come
    //second loop second array
    $data[]=[
       'id' => $order['id'],
         '..' => '..'
    ];
    }
    return $data;
    }