在Controller中循环多维数组

问题描述 投票:0回答: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')
        }

}

问题是我只循环了一个“propiedades”数组的实例。

enter image description here

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

2.如何将每个“propiedades”数组访问到下一个嵌套数组并将这些嵌套值恢复到第一个数组级别?例如,我的结果必须是每个属性记录:

pro pie大的S.ID

Propiedades.Precio.Moneda

Propiedades.Precio.Valor

3.我使用它们的值获得所有“propiedades”,我是否需要创建一个数组以在模型中插入这些记录?如何将数据传递给模型?我的模型将具有从API接收的数组的结构,以及用于“propiedades”的相应子实体


提前致谢!问候

laravel laravel-5 laravel-5.2 laravel-5.1
1个回答
0
投票

好吧,我把整个json保存到文件中,然后对其进行解码并将其全部打印出来,我看到没有复杂性,它全部循环,因为你想要我在本地和我的个人生产服务器中检查,数据正在循环出你想要的,

现在,如果你仍然在循环中遇到问题那么你需要调试更多像Is 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');

我希望这有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.