Не уверен, как вы получите результат, который вы называете, но повторение происходит из-за зацикливания каждого элемента для каждого элемента во втором массиве - следовательно, каждый параметр присутствует там дважды.
Эта версия использует 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