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 :: Версия для печати :: Аналогичные циклы for выводят разные вещи
Форумы портала PHP.SU » » Вопросы новичков » Аналогичные циклы for выводят разные вещи

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

1. SkaN - 11 Июля, 2011 - 16:45:58 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. if (isset($rows)) {
  2.         $rows = 'rowsarr[]='.str_replace(', ', '&rowsarr[]=', $rows);
  3.         parse_str($rows);
  4.         for ($i=0; $i<count($rowsarr); $i++) {
  5.                 if (count($rowsarr) - 1 != $i) {
  6.                         $query .= '`'.$rowsarr[$i].'`, ';
  7.                 }
  8.                 else {
  9.                         $query .= '`'.$rowsarr[$i].'` ';
  10.                 }
  11.         }
  12. }
  13.  
  14. if (isset($colsn)) {
  15.         $colsn = 'colsnarr[]='.str_replace(', ', '&colsnarr[]=', $colsn);
  16.         parse_str($colsn);
  17.         $colsv = 'colsvarr[]='.str_replace(', ', '&colsvarr[]=', $colsv);
  18.         parse_str($colsv);
  19.         for ($i=0; $i<count($colsvarr); $i++) {
  20.                 if ($i = 0) {
  21.                         $query .= 'WHERE `'.$colsnarr[$i].'` = \''.$colsvarr[$i].'\' AND ';
  22.                 }
  23.                 elseif (((count($colsvarr) - 1) != $i) && $i != 0) {
  24.                         $query .= '`'.$colsnarr[$i].'` = \''.$colsvarr[$i].'\' AND ';
  25.                 }
  26.                 else {
  27.                         $query .= '`'.$colsnarr[$i].'` = \''.$colsvarr[$i].'\'';
  28.                 }
  29.         }
  30. }


вот такие два цикла должны выводить похожие результаты. Первый выводит все, как надо:

а вот второй выводит такую вот вещь:
CODE (SQL):
скопировать код в буфер обмена
  1. `id` = \'main\'`id` = \'main\'`id` = \'main\'`id` = \'main\'`id` = \'main\'`id` = \'main\'`id` = \'main\'`id` = \'main\'`id` = \'main\'`id` = \'main\'`id` = \'main\'`id` = \'main\'`id` = \'main\'`id` = \'main\'`id` = \'main\'`id` = \'main\'`id` = \'main\'`id` = \'main\'`id` = \'main\'`id` = \'main\'`id` = \'main\'`id` = \'main\'`id` = \'main\'`id` = \'main\'`id` = \'main\'`id` = \'main\'`id` = \'main\'`id` = \'main\'`id` = \'main\'`id` = \'main\'`id` = \'main...


и так до бесконечности, причем, как вы видите, со служебными символами.
Я пробовал не пользоваться вторым циклом, вся функция выполнялась без сучка-задоринки. А вот тут есть какая-то неведомая ошибка....
2. OrmaJever - 11 Июля, 2011 - 17:01:25 - перейти к сообщению
посмотрие на подсветку синтаксиса на форуме, во втором цыкле
функция count не превратилась в ссылку значит это не она, возможно там первая или вторая буквы руские? перепишите название
(Добавление)
и не очень понятно откуда берётся $colsvarr ?
3. SkaN - 11 Июля, 2011 - 17:03:56 - перейти к сообщению
нет, я только что начел очепятку мою:
PHP:
скопировать код в буфер обмена
  1.                 if ($i = 0) {

я неправильно условие написал, надо два знака =. теперь все заработало))
(Добавление)
все эти интересности объявлены раннее. просто объявлены они точно правильно и смысла не было их сюда кидать

 

Powered by ExBB FM 1.0 RC1