在控制器中循环多维数组
Loop Multidimensional array in Controller
我需要在出站中消耗的多维数组中循环 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')
}
}
问题是我只循环了 "propiedades" 数组的一个实例。
1.如何循环所有 "propiedades" 数组并从中检索键值?
2。如何将每个 "propiedades" 数组访问到下一个嵌套数组并将那些嵌套值返回到第一个数组级别?
例如,我的结果必须是每个 属性 记录:
Propiedades.Id
Propiedades.Precio.Moneda
Propiedades.Precio.Valor
3。我得到了所有 "propiedades" 及其值,我是否需要创建一个数组来将这些记录插入到模型中?如何将数据传递给模型?我的模型将具有从 API 接收到的数组结构以及 "propiedades"
的相应子实体
提前致谢!
此致
好吧,我将整个 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');
希望对您有所帮助。
我需要在出站中消耗的多维数组中循环 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')
}
}
问题是我只循环了 "propiedades" 数组的一个实例。
1.如何循环所有 "propiedades" 数组并从中检索键值?
2。如何将每个 "propiedades" 数组访问到下一个嵌套数组并将那些嵌套值返回到第一个数组级别? 例如,我的结果必须是每个 属性 记录:
Propiedades.Id
Propiedades.Precio.Moneda
Propiedades.Precio.Valor
3。我得到了所有 "propiedades" 及其值,我是否需要创建一个数组来将这些记录插入到模型中?如何将数据传递给模型?我的模型将具有从 API 接收到的数组结构以及 "propiedades"
的相应子实体提前致谢! 此致
好吧,我将整个 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');
希望对您有所帮助。