如何在 laravel 中使用 foreach 从 json 文件中获取所有数据?

Posted

技术标签:

【中文标题】如何在 laravel 中使用 foreach 从 json 文件中获取所有数据?【英文标题】:how get all the data from json file using foreach in laravel? 【发布时间】:2021-03-08 05:49:34 【问题描述】:

我的 laravel 控制器

   public function index()
     
    $get=Storage::disk('public')>get('Philippines.json');
    $json = json_decode($get, true); 
           
    return view('BarangayFolder.index')>with('json',$json);
   

我试图在我的选项标签上实现的输出是这样的;

    "BANI"
    "BUYON"
    "CABARUAN"
    "CABULALAAN"
    "CABUSLIGAN"
    "CALIOET-LIBONG"
    "CASILIAN"
    "COROCOR"

我不知道如何获取所有“barangay_list”数据,我尝试了许多解决方案和想法,但仍然没有得到它。


      "01": 
        "region_name": "REGION 1",
        "province_list": 
          "ILOCOS NORTE": 
            "municipality_list": 
              "ADAMS": 
                "barangay_list": [
                  "ADAMS (POB.)"
                ]
              ,
              "BACARRA": 
                "barangay_list": [
                  "BANI",
                  "BUYON",
                  "CABARUAN",
                  "CABULALAAN",
                  "CABUSLIGAN",
                  "CADARATAN"
                ]
      


我设法获得了“region_name”的数据,即“REGION 1”,但我无法获得 barangay_list 的数据。

<datalist id="datalist-content"> 
      foreach (array($json['01']) as $data)
            <option value="$data['region_name']"></option>
      endforeach
</datalist>

【问题讨论】:

错误是什么? 【参考方案1】:

您需要了解您的 json 文件才能获得正确的数据。

您需要 barangay_list 的数据。如果我们为您的数据创建一棵树,它应该如下所示:

-01
--province_list
----->ILOCOS NORTE
----------->municipality_list
------------------>BACARRA
--------------------->barangay_list

你可以使用

foreach ($json['01']['province_list']['ILOCOS NORTE']['municipality_list']['BACARRA']['barangay_list'] as $data)
     <option value="$data"></option>
endforeach

或者您可以先将列表保存在变量中并在循环中使用它

@php
       $barangay_list = $json['01']['province_list']['ILOCOS NORTE']['municipality_list']['BACARRA']['barangay_list'];
@endphp
@foreach ($barangay_list as $data)
         <option value="$data"></option>
@endforeach

你已经使用了 true 和 json_decode,它将数据转换为数组,所以你不需要添加数组函数来转换数组。

【讨论】:

【参考方案2】:

您的循环不正确,请尝试以下代码

<datalist id="datalist-content"> 
             foreach (array($json['01']['province_list']['ILOCOS NORTE']['municipality_list']['BACARRA']['barangay_list']) as $data)
              <option value="$data">$data</option>
             endforeach
</datalist>

【讨论】:

感谢桑迪先生的想法,在删除 foreach 中的数组后,它现在运行良好。

以上是关于如何在 laravel 中使用 foreach 从 json 文件中获取所有数据?的主要内容,如果未能解决你的问题,请参考以下文章

如何在控制器传递变量(laravel)中使用刀片进行 foreach

如何在 Laravel 的 PHP/Blade 中使用 Foreach 循环?

如何在 laravel 中解码 Json 对象并在 laravel 中应用 foreach 循环

如何在 Laravel 8 中使用 foreach 从多选中保存数据?

如何在刀片模板的 foreach 循环中访问 laravel 集合?

如何使用 js 在刀片 laravel 中的 foreach 上更新变量