Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Проблема с отображением переменной цикла внутри цикла $i+1
Форумы портала PHP.SU » » Вопросы новичков » Проблема с отображением переменной цикла внутри цикла $i+1

Страниц (1): [1]
 

1. LShark - 15 Декабря, 2012 - 18:10:14 - перейти к сообщению
Есть цикл.

PHP:
скопировать код в буфер обмена
  1. for($i = 0; $i < count($_FILES['m']['name']); $i++)
  2. {
  3. echo "<br> &nbsp; &nbsp; &nbsp; &nbsp; Окно загрузки № " . 1+$i . ": " . $tema . ". ";
  4. }
  5.  

Конечно, там не только этот оператор вывода, однако если я его оставляю так - то все строки в цикле выстраиваются в 1 строку, как будто <br> не существует. Причем пропадает ВСЕ до $i+1 - выводится такое:


Вместо понятно чего:
CODE (htmlphp):
скопировать код в буфер обмена
  1. Окно загрузки № 1: .
  2. Окно загрузки № 2: .
  3. Окно загрузки № 3: .
  4. Окно загрузки № 4: .


Если оставить просто $i (т.е. не прибавлять +1), то все нормально отображается (с переносами), однако мне необходимо, чтобы нумерация тут отображалась с 1, а не с 0, а если цикл сделать с 1, а не с 0, то во всех обращениях к массиву придется вписать $i-1 , а это туева хуча строк...

Не пойму, что не срабатывает?

ЗЫ. Я понимаю, что могу определить еще одну переменную, прибавить к ней 1 и выводить ее, но неужели нет другого способа, без лишней переменной?
ЗЗЫ. PHP 5.0
(Добавление)
Пока сделал

CODE (htmlphp):
скопировать код в буфер обмена
  1. echo "<br> Окно загрузки  №";
  2. echo $i+1 . ": " . $tema . ". ";

Выводит как надо, но что за?!
2. Toxa - 15 Декабря, 2012 - 18:24:02 - перейти к сообщению
3. LShark - 15 Декабря, 2012 - 18:26:15 - перейти к сообщению
Да, работает этот вариант... спс.

Но все таки ПОЧЕМУ?
4. DelphinPRO - 15 Декабря, 2012 - 20:04:51 - перейти к сообщению
LShark пишет:
Но все таки ПОЧЕМУ?


боюсь ошибитьcя, но по-моему дело в приоритете выполнения операторов.

PHP:
скопировать код в буфер обмена
  1. // имеем:
  2. 'one' . 1 + $i . 'two'
  3. // где $i - числовое значение.
  4. // первое действие - конкатенация ('one' . 1), получаем:
  5. 'one1' + $i . 'two'
  6. // второе действие - сложение ('one1' + $i).
  7. // Здесь строка складывается с числом, поэтому включается
  8. // приведение типов к int. Строка 'one1' приводится
  9. // к значению «0» и выполняется сложение: 0 + 1, получаем:
  10. 1 . 'two'
  11. // ну и конечный результат:
  12. '1two'


PS. хотелось бы от профессионалов услышать мнение по этому поводу )

 

Powered by ExBB FM 1.0 RC1