【问题标题】:PHP: difference between stdClass arraysPHP:stdClass 数组之间的区别
【发布时间】:2020-09-27 13:58:20
【问题描述】:

我有两个对象数组:

Array1:
[[0] => stdClass, [1] => stdClass, [2] => stdClass]
Array2
[[0] => stdClass, [1] => stdClass

我想得到两个数组(Array1-Array2)之间的差异。

是否存在更好的方法来代替迭代两个数组并检查对象的属性? 非常感谢

【问题讨论】:

标签: php


【解决方案1】:

您可以使用经典的array_diff,但需要处理字符串,而不是比较数组中的对象。

因此,您可以将这些数组映射到 JSON 字符串,然后它们会还原此转换

<?php

$a = [(object)array('a' => 'b'), (object)array('c' => 'd'), (object)array('e' => 'f')];
$b = [(object)array('a' => 'b'), (object)array('g' => 'h')];

var_dump(array_map('json_decode', array_diff(array_map('json_encode', $a), array_map('json_encode', $b))));

此代码将打印:

array(2) {
  [1]=>
  object(stdClass)#6 (1) {
    ["c"]=>
    string(1) "d"
  }
  [2]=>
  object(stdClass)#7 (1) {
    ["e"]=>
    string(1) "f"
  }
}

所以这些元素存在于$a 中而在$b 中不存在。

链接下考虑了类似的问题:

array_diff() with multidimensional arrays

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-08-07
    • 2013-07-20
    • 2019-11-01
    • 1970-01-01
    • 2019-04-10
    • 2013-08-11
    • 2019-01-23
    • 2017-05-28
    相关资源
    最近更新 更多