Почему if он не распределяет новую стоимость в переменную?

Пока я реализую plugin для Wordpress, я не вижу, почему себе не распределяет стоимость в изменчивая $imgluna

Я это показываю с if - endif, но уже я это попробовал с if - elseif - endif

Также уже я это попробовал с if { } и совсем не

Также уже я это попробовал с case ()

Здесь - код:

if ($a > 29):
    $lafase = $a - 29;
else: 
    $lafase = $a;
endif;


if ($fase = 1): $imgluna = 1; endif;



if ($fase = 27): $imgluna = 9; endif;
1
задан 28.03.2019, 08:48
2 ответа

Стоимость не распределяется, потому что с $fase не estÃ: s используя действительно оператор comparaci¦n . Для равенства существуют два оператора в PHP, этом, ==, которые он сравнивает только, если две стоимость - равна, или эта ===, которые он сравнивает, если две стоимость равна, и если они того же типа (это называется también comparaci¦n строгая).

, Но, видя твой c¦digo, я думаю, что ты можешь использовать тройных операторов (видеть ссылку mÃ: s достигни). Эти операторы - fÃ: ciles понимания, прежде всего в простых сравнениях, и они помогают упрощать много c¦digo.

AsÃ, - вместо этого:

if ($a > 29):
    $lafase = $a - 29;
else: 
    $lafase = $a;
endif;

Podr¦-Схвати иметь немного asÃ, - в единственном l¦-nea используя тройные операторы:

$lafase= ($a > 29) ? $a - 29 : $a; 

Просто evalúa condici¦n слева от ?, если она истинная, переменная берет стоимость слева от :, и если фальшивая стоимость справа от :

Для другого operaci¦n, могут быть приложенными тройные операторы, тогда это:

if ($fase == 1): $imgluna = 1; endif;

if ($fase == 27): $imgluna = 9; endif;

har¦ - в as¦-:

#Asumiremos que `0` es el valor por defecto por eso es el último valor que se asigna
$imgluna = ($fase == 1) ? 1 : (($fase == 27)  ? 9 : 0);

, Если $imgluna - переменная, которая уже существует и должна пребывать неизменной, если ни одно из условий не выполняется:

$imgluna = ($fase == 1) ? 1 : (($fase == 27)  ? 9 : $imgluna);

Другая возможность

Прежде всего, когда есть много if или блоки большие switch ... case, могут использовать данные, расположенные в порядке в arrays и искать allà - стоимость.

array pondr¦ - в в relaci¦n стоимость, которая должна браться в каждом случае, например:

$allImg=array(
                "1"=>1,
                "27"=>9,
                # Más opciones 
              );
$fase=27;
#Se usa un ternario y se asigna 0 por defecto
$imgluna= isset($allImg[$fase]) ? $allImg[$fase] : 0;
echo $imgluna;

, Если есть новость opci¦n, ты ничего не должен изменять, только добавлять ее в array $allImg, и c¦digo harÃ: оставшаяся часть. Он гениален, Â: нет? Вышедшие

:

9
2
ответ дан 19.11.2019, 21:21

Ты не делаешь comparaci¦n внутри if а asignaci¦n в $fase. Сравнения - с ==

Протестируй asà -

if ($fase == 1): $imgluna = 1; endif;

if ($fase == 27): $imgluna = 9; endif;
2
ответ дан 19.11.2019, 21:21
  • 1
    Правильный, с этим bastó. Привет – Luis Moreno 28.03.2019, 10:04