两个 JSON 数据合并和 ECHO 与 PHP

Two JSON data merging and ECHO with PHP

What is the difference from the previous questions?

In other questions, the numbers of both JSON data were equal. This question does not equal JSON files.

我有两个 JSON 数据。其中一个仅包含 2 个值。另一个包含六个值。我试图用 IF ELSE 来区分,但是每个值都写了两个。 根据第一个JSON中的数字,我想把第二个JSON数据分开

例如:

3 -> val3
5->  val5

第一个JSON:

{"0":"3","1":"5"}

第二个JSON:

{"val1":"ValueOne","val2":"ValueSecond","val3":"ValueThree","val4":"4","val5":"ValueFive","val6":"ValueSix"}

$first = json_decode($jsonFile1);
$second = json_decode($jsonFile2);

foreach ($first as $key => $firstvalue) {
  foreach ($second as $secondvalue) {
    if (substr($firstvalue, -1) == $secondvalue) {  <-- 'valX' => 1
       echo "<strong>". $firstvalue . "</strong><br>";
    } else { 
       echo "<em>". $firstvalue . "</em>";
    } 
  }
}

结果:


可能是什么原因?

不确定你是如何得到你所说的输出的,但重复是由于为第二个数组中的每个项目循环每个项目 - 因此每个选项都在那里两次。

此版本使用 in_array() 查看键的最后一个字符是否在第二个 JSON 列表中(请注意,这是使用 true 转换为数组而不是对象作为 json_decode())...

的第二个参数
$jsonFile1 = '{"val1":"ValueOne","val2":"ValueSecond","val3":"ValueThree","val4":"4","val5":"ValueFive","val6":"ValueSix"}';
$jsonFile2 = '{"0":"3","1":"5"}';
$first = json_decode($jsonFile1);
$second = json_decode($jsonFile2, true);

foreach ($first as $key => $firstvalue) {
    if (in_array(substr($key, -1),$second)) {
        echo "<strong>". $firstvalue . "</strong><br>";
    } else {
        echo "<em>". $firstvalue . "</em><br>";
    }
}

给...

ValueOne
ValueSecond
ValueThree
4
ValueFive
ValueSix