在两个PHP数组中获取具有相同键但不同值的元素

时间:2016-10-21 20:49:42

标签: php arrays

所以我从JSON文件中获取信息,我得到一个名为" items"并在PHP中将它传递给这个数组:

"items": [
{
  "id": "2",
  "parent": null,
  "itemType": 0,
  "title": "Manuel Perez",
  "description": "Chief Executive Officer (CEO)",
  "phone": "(491) 183-55-45",
  "email": "ste.ballmer@name.com",
  "photo": "",
  "image": "demo/images/photos/m.png",
  "href": "showdetails.php?recordid=2",
  "isVisible": true
}

然后我必须将它与可以包含更多或更少项目的另一个进行比较,但我可以采用那些改变数组大小的元素。但是当我想要在大小相同时获得差异,并且当我无法使其工作时,键的值是不同的。

如果在位置2的第二个数组中," itemType"的值改为1我想要像这样得到这样的感觉:

Array[2] - > "itemType": 1

这样我就能知道是否有什么变化。

2 个答案:

答案 0 :(得分:1)

假设您有两个数组$ items1和$ items2:

Landing current branch 'some-branch'.
 TARGET  Landing onto "master", selected by following tracking branches upstream to the closest remote.
 REMOTE  Using remote "origin", selected by following tracking branches upstream to the closest remote.
 FETCH  Fetching origin/master...
These commits will be landed:

      - <ESC>[1;32m9912da1<ESC>[m some commit
      - <ESC>[1;32m687f799<ESC>[m some other commit

要获取$ item2中添加或修改的内容与$ item1相比较,您可以使用:

$items1 = [
    "id" => "2",
    "itemType" => 0,
];

$items2 = [
    "parent" => null,
    "itemType" => 1,
];

要获取$ items1中添加或修改的内容与$ item2相比较,您可以使用:

array_diff_assoc($items2, $items1) // displays ['parent' => null, 'itemType' => 1]

如果你想要两者,你可以组合这两个数组,并根据需要使用它们。

答案 1 :(得分:0)

  1. 首先将您的JSON数据转换为数组,并将项目分别转换为$ jsonArray1和$ jsonArray2。

  2. 现在用这样的键对你的两个数组进行排序 ksort($ jsonArray1); ksort($ jsonArray2);

  3. 现在取两个数组的差异 $ diffData = array_diff_assoc($ jsonArray1,$ jsonArray2);

  4. 输出:$ diffData是你的输出,希望这会有所帮助!!