在控制器中循环多维数组

时间:2019-03-07 00:55:01

标签: laravel laravel-5 laravel-5.2 laravel-5.1

我需要循环使用在出站API中使用的多数组。在控制器中使用了API后,我需要在模型中插入循环记录。

因此,从外部API收到的响应如下:

enter image description here

因此,我在控制器功能中所做的工作如下:

public function index()
{

    $client = new \GuzzleHttp\Client();
    $response = $client->request('GET', 'http://api', [
        'headers' => [
             'x-authtoken' => '0275d',
             'cache-control' => 'no-cache'],
             'decode_content' => false
    ]);

     //get body content
    $body = $response->getBody()->getContents();
    $data = json_decode($body, true);

    foreach ( $data['content']['Propiedades'] as $propiedades )
        {
            $id = Arr::get($propiedades, 'Id');
            $Moneda = Arr::get($propiedades, 'Precio.Moneda');
            $Precio = Arr::get($propiedades, 'Precio.Valor')
        }

}

问题在于im只是循环了一个“ propiedades”数组实例。

enter image description here

1。如何循环所有“ propiedades”数组并从中检索键值?

2。怎样才能将每个“ propiedades”数组访问到下一个嵌套数组,并将那些嵌套值恢复到第一个数组级别? 例如,我的结果必须针对每个属性记录:

Propiedades.Id

Propiedades.Precio.Moneda

Propiedades.Precio.Valor

3。我得到了所有带有其值的“建议”,是否需要创建一个数组以将这些记录插入模型中?如何将数据传递给模型?我的模型将具有从API改写的数组的结构,以及用于“ propiedades”的相应子实体


提前谢谢! 问候

1 个答案:

答案 0 :(得分:0)

好吧,我将整个json保存到文件中,然后将其解码并全部打印出来,我认为这并不复杂,因为您希望在本地和我的个人生产服务器中签入,所以一切都在循环中,数据正在循环中如您所愿,

现在,如果您仍然在循环中仍然存在问题,则需要进行更多调试,例如JSON是否正确解码?这样的事情。这是我对此问题的最后尝试,特别是循环部分,如果除了循环问题之外还有其他问题,请告诉我。 :)

    Route::get('/test',function(){
    $content = json_decode(\File::get(public_path().'/custom.txt'),true);
    // Actual Content
    //dump($content);

    // First and Best Approach
    foreach ($content['content']['Propiedades'] as $key){
        dump($key['Id']);
        dump($key['Titulo']);
        dump($key['Descripcion']);
        dump($key['Precio']);
        dump($key['Operacion']);
        dump($key['EstadoPublicacion']);
        dump($key['Ubicacion']);
        dump($key['UbicacionCadena']);
        dump($key['TipoPropiedad']);
        dump($key['Direccion']);
        dump($key['RoundDireccion']);
        dump($key['Calle']);
        dump($key['Numero']);
        dump($key['Latitud']);
        dump($key['Longitud']);
        dump($key['ImagenPrincipal']);
        dump($key['SuperficieTotal']);
        dump($key['Dormitorios']);
        dump($key['Banios']);
        dump($key['CantidadAmbientes']);
        dump($key['AtributosDestacadosListado']);
        dump($key['Usuario']);
        dump($key['IdUbicacion']);
        dump($key['Imagenes']);
        dump($key['Sucursal']);
        dump($key['FechaCreacion']);
        dump($key['FechaModificacion']);
        dump($key['PublicaPrecio']);
        dump($key['PathFicha']);
    }

    // Second and Long Approach

//    foreach ($content as $key => $value){
//        if($key === 'status'){
//            //dump($value);
//        }elseif($key === 'content'){
//            //dump($value);
//            foreach ($value as $key1 => $value1){
//                if($key1 === 'cantidadPropiedades'){
//                    //dump($value1);
//                }elseif($key1 === 'cantidadPropiedades'){
//                    //dump($value1);
//                }elseif($key1 === 'Propiedades'){
//                    //dump($value1);
//                    foreach ($value1 as $key2 => $value2){
//                        //dump($value2);
//                        dump($value2['Id']);
//                        dump($value2['Titulo']);
//                        dump($value2['Descripcion']);
//                        dump($value2['Precio']);
//                        dump($value2['Operacion']);
//                        dump($value2['EstadoPublicacion']);
//                        dump($value2['Ubicacion']);
//                        dump($value2['UbicacionCadena']);
//                        dump($value2['TipoPropiedad']);
//                        dump($value2['Direccion']);
//                        dump($value2['RoundDireccion']);
//                        dump($value2['Calle']);
//                        dump($value2['Numero']);
//                        dump($value2['Latitud']);
//                        dump($value2['Longitud']);
//                        dump($value2['ImagenPrincipal']);
//                        dump($value2['SuperficieTotal']);
//                        dump($value2['Dormitorios']);
//                        dump($value2['Banios']);
//                        dump($value2['CantidadAmbientes']);
//                        dump($value2['AtributosDestacadosListado']);
//                        dump($value2['Usuario']);
//                        dump($value2['IdUbicacion']);
//                        dump($value2['Imagenes']);
//                        dump($value2['Sucursal']);
//                        dump($value2['FechaCreacion']);
//                        dump($value2['FechaModificacion']);
//                        dump($value2['PublicaPrecio']);
//                        dump($value2['PathFicha']);
//                    }
//                }elseif($key1 === 'FiltrosAplicados'){
//                    //dump($value1);
//                }elseif($key1 === 'FiltrosDisponibles'){
//                    //dump($value1);
//                }elseif($key1 === 'OrdenamientosAplicados'){
//                    //dump($value1);
//                }elseif($key1 === 'OrdenamientosDisponibles'){
//                    //dump($value1);
//                }elseif($key1 === 'Paginado'){
//                    //dump($value1);
//                }
//            }
//        }elseif($key === 'errors'){
//            //dump($value);
//        }
//    }
    dd("STOP");
})->name('test');

希望对您有所帮助。