You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何利用多维JSON数组数据生成带data-属性的option下拉选项标签

问题梳理

你有指定结构的JSON数据,需要遍历生成带data-city自定义属性的option标签:国家名同时作为option的展示文本和value属性值,当前国家所有城市名用英文逗号拼接作为data-city属性值。现有代码仅能正确输出国家相关内容,无法正确填充data-city属性。

问题原因

原代码存在两个问题:

  1. value属性的闭合引号缺失,会导致HTML属性结构错位
  2. 没有提取对应国家下的所有城市名称,也没有做逗号拼接处理
修复后代码

如果你已经将JSON解析为PHP数组(即代码中$data为解析后的数组结构),修改循环逻辑如下即可:

foreach ($data['world'] as $countryName => $countryInfo)
{
    // 提取当前国家所有城市的name字段
    $cityNames = array_column($countryInfo['city'], 'name');
    // 拼接为英文逗号分隔的字符串
    $cityStr = implode(',', $cityNames);
    // 生成符合要求的option标签,增加转义处理避免特殊字符破坏HTML结构
    $scenario .= '<option value="' . htmlspecialchars($countryName) . '" data-city="' . htmlspecialchars($cityStr) . '">' . htmlspecialchars($countryName) . '</option>';
}
补充说明
  • array_column可以直接从多维数组中批量提取指定字段的值,无需嵌套循环,代码更简洁易读
  • 新增的htmlspecialchars转义处理可以避免国家名、城市名中包含引号、尖括号等特殊字符时,破坏HTML标签结构,安全性更高

内容的提问来源于stack exchange,提问作者Creatz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 09:12:04