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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Добавление порядкового номера к переменной

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Без описания
Pirat
Отправлено: 25 Июля, 2012 - 16:49:14
Post Id


Гость


Покинул форум
Сообщений всего: 66
Дата рег-ции: Нояб. 2007  
Откуда: Украина, Одесса


Помог: 0 раз(а)




Добрый день (вечер)...
Есть некая проблема не могу ее побороть....
Начну с начала:

Есть 100 столбцов в БД (name_1, name_2.... name_100)
Некоторые из них пустые, некоторые нет....

необходимо сделать сравнение и вывод не пустых значений столбцов...

код выглядит примерно таким образом:

CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. <? if (!empty($name_1)) {?>
  3. <tr><td><? echo $name_1; ?></td></tr>
  4. ?< } ?>
  5.  
  6. <? if (!empty($name_2)) {?>
  7. <tr><td><? echo $name_2; ?></td></tr>
  8. ?< } ?>
  9.  
  10. .........
  11.  
  12.  
  13. <? if (!empty($name_100)) {?>
  14. <tr><td><? echo $name_100; ?></td></tr>
  15. ?< } ?>
  16.  
  17.  



Согласитесь - бред, да и места много занимает.... и.т.п.
решил прибегнуть к циклу:

CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. <? for ($aaa=1; $aaa<=100; $aaa++) { ?>
  3.  


но не получается соединить переменную.... т.е.
$name_[$aaa] - не работает....

нашел еще конструкцию типа: $name = ${'name_'.$aaa};
echo $name - работает...., а условие нет: if (!empty($name)) {}

потом думал через массивы сделать - но тоже безрезультатно...

и что то Гугл не помогает.... видимо просто элементарная ошибка где то...


-----
Вообще я продаю автозапчасти... оптом
А PHP - это хобби...
 
 Top
KingStar
Отправлено: 25 Июля, 2012 - 16:53:51
Post Id



Участник


Покинул форум
Сообщений всего: 1889
Дата рег-ции: Авг. 2011  
Откуда: Беларусь


Помог: 69 раз(а)




Pirat пишет:
нашел еще конструкцию типа: $name = ${'name_'.$aaa};
echo $name - работает...., а условие нет: if (!empty($name)) {}


как такое может быть, что echo работает, а empty нет ???

если ты говоришь, что echo $name дает результат (например 1), то empty($name) дает резулт FALSE, следовательно если echo $name дает null, то и empty($name) выдаст TRUE

(Отредактировано автором: 25 Июля, 2012 - 16:56:53)



-----
То что программа работает, не означает что она написана правильно!
 
 Top
Pirat
Отправлено: 25 Июля, 2012 - 16:57:07
Post Id


Гость


Покинул форум
Сообщений всего: 66
Дата рег-ции: Нояб. 2007  
Откуда: Украина, Одесса


Помог: 0 раз(а)




В общем сделал так.... вроде заработало.....
но хотелось бы услышать ваще мнение...

CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2.                 $aaa = array('0', '1' , '2' , '3' , ..... '100');
  3.                        
  4.                         foreach ($aaa as $aaa_index) {
  5.                                
  6.                                 $name = ${'name_'.$aaa_index};                         
  7.                                 if (!empty($name)){ echo ''.$analog_code.'<br>'; }
  8.                                                
  9.                                
  10.  



Особенно как лучше делать циклом или массивом...

(Отредактировано автором: 25 Июля, 2012 - 17:00:32)



-----
Вообще я продаю автозапчасти... оптом
А PHP - это хобби...
 
 Top
ams
Отправлено: 25 Июля, 2012 - 16:59:28
Post Id



Посетитель


Покинул форум
Сообщений всего: 351
Дата рег-ции: Нояб. 2010  


Помог: 13 раз(а)




http://ua2.php.net/manual/ru/function.range.php

Но лучше делать цикл for


?< } ?> - это типо смайлик ? Радость
 
 Top
KingStar
Отправлено: 25 Июля, 2012 - 17:01:21
Post Id



Участник


Покинул форум
Сообщений всего: 1889
Дата рег-ции: Авг. 2011  
Откуда: Беларусь


Помог: 69 раз(а)




странно как-то ты конкатенацию делаешь


здесь в конце не добавил ковычки, зато здесь

PHP:
скопировать код в буфер обмена
  1. if (!empty($name)){ echo ''.$analog_code.'<br>';


вначале их почему-то вставил Улыбка

ams пишет:
Но лучше делать цикл for


а я слышал что forech все же быстрее

(Отредактировано автором: 25 Июля, 2012 - 17:03:15)



-----
То что программа работает, не означает что она написана правильно!
 
 Top
Pirat
Отправлено: 25 Июля, 2012 - 17:01:44
Post Id


Гость


Покинул форум
Сообщений всего: 66
Дата рег-ции: Нояб. 2007  
Откуда: Украина, Одесса


Помог: 0 раз(а)




ams пишет:
http://ua2.php.net/manual/ru/function.range.php

Но лучше делать цикл for


?< } ?> - это типо смайлик ? Радость


типа условие закрыл... ;)
(Добавление)
KingStar пишет:
странно как-то ты конкатенацию делаешь


здесь в конце не добавил ковычки, зато здесь

PHP:
скопировать код в буфер обмена
  1. if (!empty($name)){ echo ''.$analog_code.'<br>';


вначале их почему-то вставил Улыбка


не совсем понял....

т.е. правильно сделать было так:

CODE (htmlphp):
скопировать код в буфер обмена
  1. $name = ${'name_'.$aaa_index.'};


а во втором вроде все правильно....

можно было сделать и так:
CODE (htmlphp):
скопировать код в буфер обмена
  1.  echo $analog_code; echo '<br>';


что впринципе одно и тоже
(Добавление)
Вот-вот и я тоже слышал что foreach быстрее работает... !!!!!

По этому и спрашиваю Ваше мнение... в Данной ситуации что лучше for или foreach


-----
Вообще я продаю автозапчасти... оптом
А PHP - это хобби...
 
 Top
KingStar
Отправлено: 25 Июля, 2012 - 17:07:20
Post Id



Участник


Покинул форум
Сообщений всего: 1889
Дата рег-ции: Авг. 2011  
Откуда: Беларусь


Помог: 69 раз(а)




в первом все правильно, во втором

PHP:
скопировать код в буфер обмена
  1. if (!empty($name)){ echo $analog_code.'<br>';


ИМХО foreach

(Отредактировано автором: 25 Июля, 2012 - 17:10:09)



-----
То что программа работает, не означает что она написана правильно!
 
 Top
Pirat
Отправлено: 25 Июля, 2012 - 18:39:43
Post Id


Гость


Покинул форум
Сообщений всего: 66
Дата рег-ции: Нояб. 2007  
Откуда: Украина, Одесса


Помог: 0 раз(а)




ams пишет:
http://ua2.php.net/manual/ru/function.range.php

Но лучше делать цикл for


?< } ?> - это типо смайлик ? Радость


просто красавец....

теперь код куда интереснее:
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. foreach (range(1, 100) as $aaa) {                              
  3. $name = ${'name_'.$aaa};                               
  4. if (!empty($name)){ echo $name.'<br>'; }
  5. }
  6.  


вот и Все....

А скажите, почему по Вашему мнению for лучше ???
(Добавление)
Вот наткнулся: http://otvety[dot]google[dot]ru/otvety/t[dot][dot][dot]257f8ffa6fa2bec7


-----
Вообще я продаю автозапчасти... оптом
А PHP - это хобби...
 
 Top
KingStar
Отправлено: 25 Июля, 2012 - 19:05:28
Post Id



Участник


Покинул форум
Сообщений всего: 1889
Дата рег-ции: Авг. 2011  
Откуда: Беларусь


Помог: 69 раз(а)




результаты цикла в 100к

foreach
сгенерирована за 0.83859 сек.
сгенерирована за 0.49243 сек.
сгенерирована за 0.61867 сек.
сгенерирована за 0.27137 сек.
сгенерирована за 0.40605 сек.
сгенерирована за 0.58290 сек.

for
сгенерирована за 0.68278 сек.
сгенерирована за 0.46639 сек.
сгенерирована за 0.39864 сек.
сгенерирована за 0.29439 сек.
сгенерирована за 0.50515 сек.
сгенерирована за 1.21104 сек.

как видим, местами то один, то другой

(Отредактировано автором: 25 Июля, 2012 - 19:07:05)



-----
То что программа работает, не означает что она написана правильно!
 
 Top
Pirat
Отправлено: 26 Июля, 2012 - 10:33:23
Post Id


Гость


Покинул форум
Сообщений всего: 66
Дата рег-ции: Нояб. 2007  
Откуда: Украина, Одесса


Помог: 0 раз(а)




я тоже делал анализ....
не заметил в скорости существенной разницы....
да и в безопасности нет никакой разницы....


-----
Вообще я продаю автозапчасти... оптом
А PHP - это хобби...
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB