问题:
旧函数,例如 array_diff和 array_udiff 设计用于比较标量值数组。我们如何确定两个对象数组之间的差异,并根据特定属性值进行比较?
解决方案:
幸运的是,可以利用 array_udiff以满足这一要求。我们定义一个专注于所需属性的自定义比较函数,然后利用 array_udiff 来确定两个数组之间的差异。
考虑以下示例数组:
<code class="php">$array1 = array( (object) ['id' => '205', 'day_id' => '12'], ... ); $array2 = array( (object) ['id' => '205', 'day_id' => '13'], ... );</code>
我们的目标是根据 id 属性识别这些数组之间的差异。为此,我们可以创建一个比较函数:
<code class="php">function compare_objects($obj_a, $obj_b) { return $obj_a->id - $obj_b->id; }</code>
此函数比较两个对象的 id 属性,并以整数形式返回差值。然后,我们使用 array_udiff,如下所示:
<code class="php">$diff = array_udiff($array1, $array2, 'compare_objects');</code>
或者,在 PHP 5.3 及更高版本中,我们可以使用匿名函数进行比较:
<code class="php">$diff = array_udiff($array1, $array2, function ($obj_a, $obj_b) { return $obj_a->id - $obj_b->id; } );</code>
此解决方案有效地计算两个之间的差异通过比较指定的属性值来获取对象数组。生成的 $diff 数组将包含根据比较条件表示 $array1 或 $array2 中唯一元素的对象。
以上是如何通过比较特定属性值来确定对象数组之间的差异?的详细内容。更多信息请关注PHP中文网其他相关文章!