如何利用多维JSON数组数据生成带data-属性的option下拉选项标签
问题梳理
你有指定结构的JSON数据,需要遍历生成带data-city自定义属性的option标签:国家名同时作为option的展示文本和value属性值,当前国家所有城市名用英文逗号拼接作为data-city属性值。现有代码仅能正确输出国家相关内容,无法正确填充data-city属性。
问题原因
原代码存在两个问题:
value属性的闭合引号缺失,会导致HTML属性结构错位- 没有提取对应国家下的所有城市名称,也没有做逗号拼接处理
修复后代码
如果你已经将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
相关产品推荐
相关产品推荐

