Можно ли объединить операторы сопоставления с деструктуризацией массива в PHP, чтобы добиться чего-то вроде сопоставлени ⇐ Php
-
Гость
Можно ли объединить операторы сопоставления с деструктуризацией массива в PHP, чтобы добиться чего-то вроде сопоставлени
Я надеялся, что что-то подобное сработает:
$bar = match (foo()) { [] => выдать исключение, [, ] => выдать исключение, [$x] => $x, }; Где я бы проверил, дает ли foo() массив, состоящий ровно из одного элемента, и если да, сохранит этот один элемент в $bar, в противном случае выдайте исключение.
Естественно, я могу сделать это с помощью операторов if, но надеялся, что что-то похожее на этот синтаксис сработает.
Это не работает, поскольку происходит сбой в [, ] с Невозможно использовать пустые элементы массива в массивах и в $x с Неопределенная переменная — оба значения соответствуют ожиданиям.
Моя мотивация — функциональное программирование, где нечто подобное могло бы работать. Есть ли способ написать что-то похожее на мой код, который будет работать?
Я надеялся, что что-то подобное сработает:
$bar = match (foo()) { [] => выдать исключение, [, ] => выдать исключение, [$x] => $x, }; Где я бы проверил, дает ли foo() массив, состоящий ровно из одного элемента, и если да, сохранит этот один элемент в $bar, в противном случае выдайте исключение.
Естественно, я могу сделать это с помощью операторов if, но надеялся, что что-то похожее на этот синтаксис сработает.
Это не работает, поскольку происходит сбой в [, ] с Невозможно использовать пустые элементы массива в массивах и в $x с Неопределенная переменная — оба значения соответствуют ожиданиям.
Моя мотивация — функциональное программирование, где нечто подобное могло бы работать. Есть ли способ написать что-то похожее на мой код, который будет работать?
Мобильная версия