Код: Выделить всё
function test_array_diff($all, $filtered)
{
return array_diff($all, $filtered);
}
Код: Выделить всё
function test_array_udiff($all, $filtered)
{
return array_udiff($all, $filtered, fn($item1, $item2) => $item1 != $item2);
}
Код: Выделить всё
function test_in_array($all, $filtered)
{
$diff = [];
foreach ($all as $case) {
if (!in_array($case, $filtered, true)) {
$diff[] = $case;
}
}
return $diff;
}
Код: Выделить всё
enum MyEnum
{
case FOO;
case BAR;
}
Код: Выделить всё
$all = MyEnum::cases();
$filtered = [MyEnum::BAR];
Код: Выделить всё
var_dump(test_array_udiff($all, $filtered));
var_dump(test_in_array($all, $filtered));
Код: Выделить всё
var_dump(test_array_diff($all, $filtered));
Разве array_diff() не должен иметь возможности работать «из коробки» с массивами перечислений так же, как in_array() или array_udiff()?
Подробнее здесь: https://stackoverflow.com/questions/791 ... ereas-in-a
Мобильная версия