如果 json 中的 id 与 php 相同,则替换值

如果 json1 中的 id 与 json2 相同,我尝试替换 json 值而不是替换 json1 中的名称,这里是我的 json:


$json1 = '[{"categoryId":"10","name":"Technology"},{"categoryId":"10","name":"Blog"},{"categoryId":"11","name":"Programming"}]';

$json2 = '[{"categoryId":"10","name":"Tech"}]';

我的预期结果是:


$json1 = '[{"categoryId":"10","name":"Tech"},{"categoryId":"10","name":"Tech"},{"categoryId":"11","name":"Programming"}]';

到目前为止,我使用的是 javascript:


json1.forEach(function(json1) {

  if (json2.categoryId === json1.categoryId) {

    json1.name = json2.name

  }

});

但如何通过 php 语言做到这一点?


呼如林
浏览 143回答 2
2回答

富国沪深

我希望这对你有帮助// Your json data        $json1 = '[{"categoryId":"10","name":"Technology"},{"categoryId":"11","name":"Blog"},{"categoryId":"12","name":"Programming"}]';        $json2 = '[{"categoryId":"10","name":"Tech"}]';        // Turn json into an array        $array1 = json_decode($json1, true);        $array2 = json_decode($json2, true);        // Loop to json2 as array        foreach ($array2 as $value) {          $categoryId = $value['categoryId'];          // Check if the categoryId exist in array 1 and get the index key          $key = array_search($categoryId, array_column($array1, 'categoryId'));          // Check if the key exist ena check if it has a name to be changed          if (isset($array1[$key]) && isset($array1[$key]['name'])) {            // Set the new name            $array1[$key]['name'] = $value['name'];          }        }        // Turn the array back into json        $json1 = json_encode($array1);

一只甜甜圈

您的解决方案在 JS 中有效吗?在我看来,在循环中,您应该与 json2 变量的第一个条目进行比较,因为整个 json2 是一个对象列表,本身没有属性name。在 PHP 中,这可以像这样工作:$arr1 = json_decode($json1);$arr2 = json_decode($json2);$arr2entry = $arr2[0]; # this is what we want to compare againstforeach ($arr1 as &$arr1entry) { #[1]   if ($arr2entry["categoryId"] == $arr1entry["categoryId"]) {      $arr1entry["name"] = $arr2entry["name"];   }}#[1] notice the ampersand here, that's a reference assignment,#it is needed to actually modify the content of the original array.
打开App,查看更多内容
随时随地看视频慕课网APP