PHP如何获取多语言结构JSON的顶层语言键并读取对应配置
问题原因
你之前的遍历写法没有捕获顶层数组的键名,只拿到了键对应的配置值,所以判断$key == 'en'实际是拿数组和字符串比较,自然无法生效。
最优解决方案
你已经明确知道要取对应语种的配置,不需要遍历整个数组,直接通过键名读取即可,性能更高,也避免冗余逻辑:
$target_lang = 'en'; // 可动态替换为当前站点的语种变量 $json_values = json_decode($array, true); // 先判断目标语种配置是否存在,避免代码报错 if (isset($json_values[$target_lang])) { $config = $json_values[$target_lang]; $label = $config['label']; $name = $config['name']; if ($config['f_type'] == 'input') { echo '<div class="form-group"><label for="usr">'.$label.':</label> <input type="text" value="'.$name.'" class="form-control"></div>'; } }
遍历判断的修正写法
如果确实需要遍历所有顶层键做逻辑判断,调整foreach语法同时捕获键名和值即可:
$json_values = json_decode($array, true); foreach ($json_values as $lang_key => $config) { if ($lang_key == 'en') { echo "language is English"; // 渲染逻辑写在这里 $label = $config['label']; $name = $config['name']; if ($config['f_type'] == 'input') { echo '<div class="form-group"><label for="usr">'.$label.':</label> <input type="text" value="'.$name.'" class="form-control"></div>'; } } }
内容的提问来源于stack exchange,提问作者lStoilov
相关产品推荐
相关产品推荐

