Google действительно подвел меня для этого. Я хочу сделать сравнение меньше или больше, чем, но только на 1. Таким образом, я могу определить, является ли значение B на единицу меньше или больше, чем A.
if (A is one less than B || A is one greater than B) {
return true
}
Это то, что я хочу сделать.






Проведите стандартный тест на равенство.
Просто выполните вычитание или сложение значения, с которым вы сравниваете.
3 === (4-1)
@MuhammadAzizolAminuddin — Другая сторона || была оставлена как тривиальное и очевидное упражнение для читателя.
Согласен, но лучше упомянуть, что есть вторая часть, чтобы новый программист знал, что есть другая часть.
Вероятно, он должен иметь оба для завершения. Он должен определить, является ли что-либо на единицу меньше или больше значения.
@Hasen — не стесняйтесь редактировать его, если считаете, что нужно кормить с ложечки целиком, а не просто объяснять принципы. Это вики сообщества является.
В любом случае, ниже были гораздо лучшие ответы. Я уже выбрал другой.
Что-то вроде этого. Пока разница между $a и $b равна 1.
if (abs($a - $n) == 1) {...}
Если вы всегда хотите проверить, находится ли он выше или ниже, продифференцируйте их и посмотрите, равно ли абсолютное значение результата единице.
if (abs($a - $b) === 1) {
// Do your thing
}
См. этот живая демонстрация.
Перевод вашего псевдоусловия:
(A is one less than B) or (A is one greater than B)
это становится:
if ( $A === $B-1 || $A === $B+1 ) {
return true;
}
Не мое отрицательное мнение, но этот тернарный оператор вызывает больше путаницы, чем решает. Он также нуждается в скобках вокруг каждой подгруппы для правильной работы.
@Qirel скобки не нужны, я проверил это перед публикацией. Но я согласен, троичный код может быть более сложным для понимания, он выглядит беспорядочно.
Это неправильно. скажем, A = 3 и B = 4. op попросит проверить, меньше или больше $ B, чем A на 1. Итак, если B = 2, op хочет быть правдой, но этот алгоритм вернет false.