如何输出存储在一个数组中的三个数组? [重复]

问题描述 投票:0回答:3

我正在将此数组保存在我的数据库中:

$voz = array(); $datos = array(); $posicion_movil = array();

for ($i = 0; $i <= (int)$total_data["general_total_movil"]-1; $i++) {
   array_push($posicion_movil, $i);
   array_push($voz, "ilimitado");
   array_push($datos, $data["movil_datos_datos-nacional"][$i]);

}

$movil = array(
   "posicion" => $posicion_movil,
   "voz" => $voz,
   "datos" => $datos
);

$mi_resumen =  new MyTariffResume();
$mi_resumen->movil = json_encode($movil, JSON_FORCE_OBJECT);
$mi_resumen->save();

我正在解码这个 json:

$mi_tarifa = MyTariffResume::where('user_id', \Auth::user()->id)->first();
$movil = json_decode($mi_tarifa["movil"], true);

但是当我决定循环遍历我的 Laravel Blade 中的数组时......

@foreach($movil as $i=>$movi)
{{$movi[$i]}} //Undefined index: posicion
 @endforeach

@foreach($movil as $i=>$movi)
   {{$movi[0]}} //a full iteration (0, "ilimitado", 20)
@endforeach

@foreach($movil as $i=>$movi)
   {{$movi[0][$i]}} //Illegal string offset 'voz' 
@endforeach

@foreach($movil as $i=>$movi)
   {{$movi[$i][0]}} //Undefined index: posicion
@endforeach

@foreach($movil as $i=>$movi)
    {{$movi[0][0]}} //Undefined index: posicion
@endforeach

我该如何解决这个问题?我没有什么可以证明的,我不知道还能做什么。

我保存到数据库的 JSON 示例:

{"posicion":{"0":0,"1":1},"voz":{"0":"ilimitado","1":"ilimitado"},"datos":{"0":"ilimitado","1":"60_gb_100_gb"}}
php json laravel laravel-blade
3个回答
1
投票

我解决了它比我想象的要容易得多......

    $movil = json_decode($mi_tarifa->movil, true);
    $total_moviles = count($movil["voz"]);

@for ($i = 0; $i <= $total_moviles-1; $i++)
     <p><strong>Móvil {{$i+1}}</strong></p>
     <p><strong>Voz</strong>: {{$movil["voz"][$i]}}</p>
     <p><strong>Datos</strong>: {{$movil["datos"][$i]}}</p>
@endfor

谢谢大家的宝贵时间。


0
投票

您应该循环数组中的所有项目:

@foreach($movil as $i=>$movi)
   @foreach($movi as $key => $item)
    {{ $i.' '.$key.' - '.$item }}
   @endforeach
@endforeach

0
投票

对于您想要做的事情来说,您的代码非常复杂。但为了让你的代码正常工作,你误解了

foreach
对对象的作用。

想象以下数据。

{"posicion":{"0":0,"1":1}}

以下

foreach
致电。

@foreach($movil as $i=>$movi)

只会运行 1 次,然后

$i
将为“位置”,
$movi
{"0":0,"1":1}
。您正在访问
posicion
上的密钥
$movi
。将您的代码更改为此应该可以使其工作。然后在代码中进行相应的操作。

@foreach($movil as $i=>$movi)
    {{$movil[$i][0]}}
@endforeach
© www.soinside.com 2019 - 2024. All rights reserved.