Два JSON слияния данных и ECHO с PHP - PullRequest
1 голос
/ 09 мая 2019

В чем отличие от предыдущих вопросов?

В других вопросах числа обоих данных JSON были равны. это вопрос не равен JSON-файлам.

У меня есть два 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>";
    } 
  }
}

Результат:


  • ValueOne
  • ValueOne
  • ValueSecond
  • ValueSecond
  • ValueThree
  • ValueThree
  • ValueFour
  • ValueFour
  • ValueFive
  • ValueFive
  • ValueSix
  • ValueSix

В чем может быть причина?

1 Ответ

0 голосов
/ 09 мая 2019

Не уверен, как вы получите результат, который вы называете, но повторение происходит из-за зацикливания каждого элемента для каждого элемента во втором массиве - следовательно, каждый параметр присутствует там дважды.

Эта версия использует 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>";
    }
}

дает ...

1012 * ValueOne *
ValueSecond
ValueThree
4 * ** 1022 тысяча двадцать один ** +1023 * ValueFive
ValueSix

...