Я до сих пор не смог найти эту информацию в официальных документах PHP или на этом сайте. Таким образом, это может означать, что я ищу неправильные термины или не поддерживается. Что я ищу? Я опишу это …
Допустим, у меня есть следующие сравнения в PHP:
if (($a == $b) && ($b == $c)) doSomething(); else doSomethingElse(); if (($d < $e) && ($e < $f)) doSomething(); else doSomethingElse();
Есть ли у PHP какой-то синтаксис для объединения сравнений без явного ИИНГ двух разных сравнений? Например, возможно что-то подобное:
if ($a == $b == $c) doSomething(); else doSomethingElse(); if ($d < $e < $f) doSomething(); else doSomethingElse();
Обратите внимание, что я ищу синтаксическую стенографию на этом языке. Я знаю, что я могу легко написать функцию для каждого из этих сопоставленных цепочек, но это неуклюжая работа и не желательна. Например:
function chainedGreaterThan($args) { for ($i = 0; $i < count($args) - 1; $i++) if ($args[$i] <= $args[$i + 1]) return false; return true; }
Это технически будет работать, но не является синтаксическим сокращением, данным языком.
Нет, PHP не имеет ничего подобного.
Вы могли бы сделать что-то ужасное, как это, когда у вас есть очень большое количество вещей для сравнения.
<?php $arr = [1, 2, 3]; $less_than = function($a, $b) { return $a < $b; }; $greater_than = function($a, $b) { return $a > $b; }; function apply_operator($arr, $operator) { for ($i = 0; $i < sizeof($arr) - 1; $i++) { if (!$operator($arr[$i], $arr[$i + 1])) { return false; } } return true; } var_dump(apply_operator($arr, $less_than)); // true var_dump(apply_operator($arr, $greater_than)); // false
Но для большего / меньшего, чем вы можете просто сортировать и сравнивать с оригиналом, а для равного вы можете проверить размер array_unique
.