PHP% оператор, какой результат должен быть возвращен? - PullRequest
0 голосов
/ 24 июля 2010

$ djs_all_num = mysql_num_rows ($ djs_all_db);while ($ djs_all = mysql_fetch_array ($ djs_all_db)) {if ($ djs_all_num% "2") {

С помощью оператора my (() это должно уменьшить количество строк вдвое, и так далее, в остальном далеена нем должен отображаться остаток.

Это правильно?

Ответы [ 2 ]

6 голосов
/ 24 июля 2010

Это ничего не делит пополам. Это дает остаток с 2 в качестве делителя. Это будет 0, если четное, 1, если нечетное. Так что, если djs_all_num нечетно, он введет оператор if. Вы должны написать 2 вместо этого. Использование неявного преобразования из строки в int сбивает с толку и не нужно.

Обратите внимание, что это не работает для каждой строки, поскольку левый операнд - это общее количество строк, а не индекс строки. Чтобы использовать индекс строки, сделайте что-то вроде:

$row_ind = 0;
$djs_all_num = mysql_num_rows($djs_all_db);
        while($djs_all = mysql_fetch_array( $djs_all_db )) {
        if ($row_ind++ % 2) {
1 голос
/ 24 июля 2010

Оператор% aka Modulus (редактировать) определяет, был ли остаток (/ редактировать).Используется довольно часто для определения нечетных / четных строк.

Таким образом, 1% 2 будет равен .5 1 (я думаю, что моя математика верна). 2%2 = 0.

Надеюсь, это поможет.

РЕДАКТИРОВАТЬ: Извините, я провел локальное тестирование и обнаружил, что мое утверждение неверно, изменено, чтобы быть правильным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...