我需要循环使用在出站API中使用的多数组。在控制器中使用了API后,我需要在模型中插入循环记录。
因此,从外部API收到的响应如下:
因此,我在控制器功能中所做的工作如下:
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”数组实例。
1。如何循环所有“ propiedades”数组并从中检索键值?
2。怎样才能将每个“ propiedades”数组访问到下一个嵌套数组,并将那些嵌套值恢复到第一个数组级别? 例如,我的结果必须针对每个属性记录:
Propiedades.Id
Propiedades.Precio.Moneda
Propiedades.Precio.Valor
3。我得到了所有带有其值的“建议”,是否需要创建一个数组以将这些记录插入模型中?如何将数据传递给模型?我的模型将具有从API改写的数组的结构,以及用于“ propiedades”的相应子实体
提前谢谢! 问候
答案 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');
希望对您有所帮助。