首页 > 解决方案 > array_udiff 在带有字符串和对象的数组上

问题描述

我想要两个数组之间的区别。这些数组可以包含字符串或对象。我只想array_udiff根据字符串(如果它是一个字符串)或对象类型(如果它是一个对象)来检查。

这是我尝试过的:

$field_rules = ['required', new \App\Rules\MyCustomRule];
$rules_ignore_realtime = ['confirmed', new \App\Rules\MyCustomRule];

$diff_rules = array_udiff($field_rules, $rules_ignore_realtime, function ($a, $b) {
    if (is_object($a)) return $a instanceof $b;
    else return $a == $b;
});

这总是导致一个空数组。我也不确定instanceof我是否应该在这里使用。

标签: php

解决方案


我傻了:

$diff_rules = array_udiff($field_rules, $rules_ignore_realtime, function ($a, $b) {
    return $a != $b;
});

推荐阅读