关联数组的json_decode

Posted

技术标签:

【中文标题】关联数组的json_decode【英文标题】:json_decode of associative array 【发布时间】:2021-07-20 17:53:53 【问题描述】:

我将这个数组保存在我的数据库中:

$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 刀片中循环遍历数组时......

@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"

【问题讨论】:

在 *** 上如果有什么对你有帮助的话,如果你接受了正确的答案会很好:) 【参考方案1】:

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

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

【讨论】:

【参考方案2】:

您的代码对于您要执行的操作非常复杂。但是为了使您的代码正常工作,您误解了foreach 对对象的作用。

想象以下数据。

"posicion":"0":0,"1":1

以下foreach 调用。

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

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

@foreach($movil as $i=>$movi)
    $movil[$i][0]
@endforeach

【讨论】:

【参考方案3】:

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

    $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

感谢大家的宝贵时间。

【讨论】:

以上是关于关联数组的json_decode的主要内容,如果未能解决你的问题,请参考以下文章

关联数组

php判断数组是关联数组还是数值数组

关联数组VS索引数组

PHP 数组中的每个ID键关联一个值,可不可以关联两个值?

将关联数组更改为索引数组/获取 Zend_Table_Row_Abstract 作为非关联

关联数组