Что это значит? expr1 = expr2 Mod expr3 = 0 - PullRequest
1 голос
/ 18 июля 2009

Итак, я портирую приложение VBA на PHP и наткнулся на этот замечательный маленький кусочек кода:

expr1 = expr2 Mod expr3 = 0

Я думал, что он ведет себя как троичный оператор, но когда я разбил его на простые, если тогда заявления, результат не был ожидаемым. Поэтому я прошу сообщество блестящих стек переполнение помочь мне и изложить его в понятных терминах. Я знаю, глядя на другие ответы, я не буду разочарован. [/ end brown_nose>]

Ответы [ 2 ]

8 голосов
/ 18 июля 2009

Это присваивает expr1 логическое значение, которое указывает, может ли expr2 быть разделен равномерно (без остатка) на expr3. Помните, что = означает == в VB: D.

Вот как это будет выглядеть с подразумеваемыми скобками:

expr1 = ((expr2 Mod expr3) = 0)
5 голосов
/ 18 июля 2009

Это оператор модуля:

a MOD b = remainder of a/b

в PHP это знак%:

a%b

см. Документацию php здесь

Итак, линия

expr1 = expr2 Mod expr3 = 0

означает, что expr1 имеет значение true, если expr2 можно разделить на expr3 без остатков: например:

20 MOD 5 = 0 ==> TRUE
22 MOD 5 = 2 ==> FALSE
...