【发布时间】:2021-09-16 18:36:32
【问题描述】:
我有一个像这样的 JSON
$array = '{
"de": {
"name": "last_name",
"label": "Last Name",
"f_type": "input"
},
"en": {
"name": "last_name",
"label": "Last Name",
"f_type": "input"
}
}';
而我想要实现的是当语言为英语时显示来自en 数组的值
然后我像这样循环遍历 JSON。
$json_values = json_decode( $array, true);
foreach ($json_values as $key) {
foreach ($key as $item => $value) {
if ($item == 'label') {
$label = $value;
}
if ($item == 'name') {
$name = $value;
}
if ($item == 'f_type') {
if ($value == 'input') {
echo '<div class="form-group"><label for="usr">'.$label.':</label>
<input type="text" value="'.$name.'" class="form-control"></div>';
}
}
}
}
但是,如果我尝试获取语言键名并比较它是否是这样的特定值,则它不起作用
foreach ($json_values as $key) {
if( $key == 'en'){
echo "language is English";
}
}
所以,我不知道如何检查语言是什么并只显示该语言的值。
【问题讨论】:
-
当然
$json_values['en']是最简单的方法。 -
忘记您最初以 JSON 格式接收数据的事实。您已经将其解码为字典,因此它以前的表示是无关紧要的。也就是说,您是否在寻找
foreach ($sequence as $key => $value) ...语法? -
通过
$json_values[$language]['name']之类的方式访问这些值肯定比遍历它们更可取。如果你想遍历所有语言,那么它是foreach ($json_values as $language => $data) { echo "... $data[name] ..."; }。 -
@NigelRen,那行不通。因为我需要知道我不知道是否存在的语言键的名称,因为可能还有其他语言。因此,我需要将键名放入一个字符串中,然后进行比较。
-
foreach ($json_values as $key)循环遍历 值,而不是键!即使您将变量命名为“$key”,它仍然是值。