2010-07-24 2 views
-1

$ djs_all_num = mysql_num_rows ($ djs_all_db); в то время как ($ djs_all = mysql_fetch_array ($ djs_all_db)) { если ($ djs_all_num% "2") {Оператор PHP%, какой результат должен быть возвращен?

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

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

ответ

6

Ничего не уменьшает на половину. Он дает остаток с 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) { 
+0

Я никогда не заставляю вас работать, любая идея почему? – Sam

+0

На самом деле он не сокращает всего на два, но он должен «разбить» мои строки на две группы. – Sam

+0

@Sam, если количество строк всегда нечетное, if всегда будет работать. Если вы хотите чередовать строки, вам нужно использовать индекс строки, а не количество строк. –

1

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

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

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

EDIT: Извините, некоторые местные тесты и выяснили, что мое заявление неверно, было изменено, чтобы быть правильным.