Как я могу увеличить $x
с помощью тернарного оператора?Приращивание значения с помощью PHP-тернарного оператора
Я пробовал $x = $x==2 ? 0 : ++;
, но, очевидно, это не сработало.
if($x == 2){
$x=0;
}else{
$x++;
}
Спасибо.
Как я могу увеличить $x
с помощью тернарного оператора?Приращивание значения с помощью PHP-тернарного оператора
Я пробовал $x = $x==2 ? 0 : ++;
, но, очевидно, это не сработало.
if($x == 2){
$x=0;
}else{
$x++;
}
Спасибо.
Лучший способ сделать это было бы:
$x = $x === 2 ? 0 : $x+1;
Если вы настаиваете на использовании трехкомпонентной только для увеличения вар:
$x += $x === 2 ? $x*(-1) : 1;//or hard-code -2 instead of $x*(-1)
Это добавляет 1 к $x
или добавляет $x*-1
до $ x ($x + (-$x)
- 0). В целом, однако, я хотел бы добавить, что тройной (особенно в PHP) следует избегать как можно больше. В этом случае, письма:
if (++$x === 3)
{
$x = 0;
}
ли то же самое, и не что гораздо больше кода, хотя это выглядит намного лучше. Тем не менее, прирост в заявлении, если по-прежнему грязно, лучше прибавка заранее, или:
$x = $x === 2 ? -1 : $x;
$x++;
Если у вас есть странное предпочтение триад ... а если имеет быть одно- подкладка:
$x = ($x ===2 ? -1 : $x) +1;
работы тоже ... но есть code-golfing site для такого рода вещей ...
Отлично, спасибо за то, что сообщили мне о кодовом гольф-сайте! – user933791
Почему бы не использовать оператор модуля для этого?
$x = ++$x % 2;
Вы хотите '$ x = ++ $ x% 3' по коду OP x может быть 0,1 или 2 –
На самом деле, если' x' удается установить значение 3 в другом месте, этот оператор модуля даст другой результат. Но это зависит от того, что фактически хочет ОП (может быть ошибкой в логике!) –
Почему $ x ++ не работает? Я не могу найти объяснение ... Как может быть, что pre increment действительно работает, а приращение постов - нет? – greg
@greg: '++ $ x' увеличивает значение, а затем присваивает его' $ x', '$ x ++' присваивает '$ x' first и * then * увеличивает значение. –
Спасибо за ответ, но я до сих пор его не понимаю ... в обоих случаях он выполняет две операции. Итак, давайте предположим, что $ x = 1. Он обнаружил, что $ x == 2 является ложным, поэтому: Выполнение $ x ++ присваивает $ x = 1, а затем увеличивает значение, поэтому $ x = 2 ... в конце Я должен все еще иметь $ x = 2. Выполнение ++ $ x увеличит значение до 2, а затем назначит его $ x. Итак, опять же, $ x = 2. В следующем случае я бы понял разницу между ++ $ y и $ y ++: $ x = ($ x == 2)? 0: $ y ++ => $ x = 1 и $ y = 2 $ x = ($ x == 2)? 0: ++ $ y => $ x = 2 и $ y = 2 – greg