【问题标题】:Get JSON key with PHP [duplicate]使用 PHP 获取 JSON 密钥 [重复]
【发布时间】: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 =&gt; $value) ... 语法?
  • 通过$json_values[$language]['name'] 之类的方式访问这些值肯定比遍历它们更可取。如果你想遍历所有语言,那么它是foreach ($json_values as $language =&gt; $data) { echo "... $data[name] ..."; }
  • @NigelRen,那行不通。因为我需要知道我不知道是否存在的语言键的名称,因为可能还有其他语言。因此,我需要将键名放入一个字符串中,然后进行比较。
  • foreach ($json_values as $key) 循环遍历 ,而不是键!即使您将变量命名为“$key”,它仍然是值。

标签: php json array-key


【解决方案1】:
$json = '{
    "de": {
        "name": "last_name",
        "label": "Last Name",
        "f_type": "input"
    },
    "en": {
        "name": "last_name",
        "label": "Last Name",
        "f_type": "input"
    }
}';

$json = json_decode($json,true);
$lang = 'en';

if($lang == 'en'){
    $values = $json[$lang];
} else {
    $values = $json['de'];
}

echo  '<div class="form-group"><label for="usr">'.$values['label'].':</label><input type="text" value="'.$values['name'].'" class="form-control"></div>';

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-02-06
    • 2021-10-03
    • 1970-01-01
    • 2023-04-02
    • 2017-06-08
    • 1970-01-01
    • 1970-01-01
    • 2018-03-10
    相关资源
    最近更新 更多