Laravel中如何用foreach循环打印TLD及声明对应数组结构
在Laravel中处理该JSON数据的foreach循环方案
首先,我们先把你的JSON数据转换成Laravel中可用的格式,通常用json_decode()函数就能轻松搞定:
// 假设你的JSON字符串存在$json变量中 $jsonData = '{ "result": "success", "currency": { "id": "1", "code": "INR", "prefix": " ₹", "suffix": "INR", "format": "1", "rate": "1.00000" }, "pricing": { "in": { "categories": [ "ccTLD", "Geography" ], "addons": { "dns": true, "email": true, "idprotect": true }, "group": "", "register": { "1": "704.39" }, "transfer": { "1": "704.39" }, "renew": {} } } }'; // 转成关联数组(第二个参数传true),方便后续数组操作 $data = json_decode($jsonData, true);
一、用foreach循环打印TLD
这里的TLD指的是pricing对象下的各个键(比如示例里的in,对应.in域名后缀)。我们可以直接遍历$data['pricing']的键值对:
方式1:基于关联数组的遍历(推荐)
@foreach($data['pricing'] as $tld => $tldDetails) <p>当前TLD后缀:{{ $tld }}</p> <!-- 要是需要打印该TLD的详细信息,比如1年注册价 --> <p>1年注册价格:{{ $data['currency']['prefix'] . $tldDetails['register']['1'] }}</p> @endforeach
方式2:基于对象格式的遍历
如果你没把JSON转成关联数组,而是保留原生对象格式(json_decode不传第二个参数),可以这么写:
$data = json_decode($jsonData); @foreach($data->pricing as $tld => $tldDetails) <p>当前TLD后缀:{{ $tld }}</p> <p>1年注册价格:{{ $data->currency->prefix . $tldDetails->register->{'1'} }}</p> @endforeach
二、通过foreach循环声明该数组结构
如果需要动态构建和示例结构一致的数组,我们可以用foreach循环来组装。比如假设你有一批TLD的基础数据,就可以这么做:
示例:动态生成完整结构数组
// 先初始化基础结构 $baseData = [ 'result' => 'success', 'currency' => [ 'id' => '1', 'code' => 'INR', 'prefix' => ' ₹', 'suffix' => 'INR', 'format' => '1', 'rate' => '1.00000' ], 'pricing' => [] // 先留空,后续用foreach填充 ]; // 模拟要添加的TLD数据列表(可以从数据库或接口获取) $tldList = [ 'in' => [ 'categories' => ['ccTLD', 'Geography'], 'addons' => ['dns' => true, 'email' => true, 'idprotect' => true], 'group' => '', 'register' => ['1' => '704.39'], 'transfer' => ['1' => '704.39'], 'renew' => [] ], 'com' => [ // 额外加一个TLD示例 'categories' => ['gTLD'], 'addons' => ['dns' => true, 'email' => false, 'idprotect' => true], 'group' => 'General', 'register' => ['1' => '800.00'], 'transfer' => ['1' => '750.00'], 'renew' => ['1' => '780.00'] ] ]; // 通过foreach循环把TLD数据批量塞进pricing数组 foreach($tldList as $tld => $details) { $baseData['pricing'][$tld] = $details; } // 现在$baseData就和你提供的JSON结构完全一致了,也可以转成JSON输出查看 echo json_encode($baseData, JSON_PRETTY_PRINT);
要是在Blade模板里构建(较少见,但也可行)
// 假设控制器已经把$tldList传到了视图 @php $baseData = [ 'result' => 'success', 'currency' => [ 'id' => '1', 'code' => 'INR', 'prefix' => ' ₹', 'suffix' => 'INR', 'format' => '1', 'rate' => '1.00000' ], 'pricing' => [] ]; foreach($tldList as $tld => $details) { $baseData['pricing'][$tld] = $details; } @endphp <!-- 可以输出格式化后的JSON查看结果 --> <pre>{{ json_encode($baseData, JSON_PRETTY_PRINT) }}</pre>
内容的提问来源于stack exchange,提问作者sharmila
相关产品推荐
相关产品推荐

