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]   

> Без описания
leshiy_SV
Отправлено: 19 Января, 2010 - 15:34:28
Post Id



Гость


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


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




Помогите можно ли как нибудь упростить код, чтобы два раза не перебирать массив?
CODE (htmlphp):
скопировать код в буфер обмена
  1. foreach ($user as $keys=>$values)  {
  2.   if((empty($user["$keys"]))||(($user["keys"])=='""'))  unset($user["$keys"]);}//убрать пустые значения
  3. foreach ($user as $keys=>$values)  {
  4.   $infoUser.=$keys."=".$values.", ";}// получить строку ключ=значение,
  5. echo $infoUser;
Чтобы в итоге получить строку вида name=Иван, age=18 и т.д.
 
 Top
Ch_chov
Отправлено: 19 Января, 2010 - 15:43:22
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2121
Дата рег-ции: Июль 2008  
Откуда: из города


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




А что это значит. В массиве могут быть значения с в виде двух кавычек?
 
 Top
leshiy_SV
Отправлено: 19 Января, 2010 - 15:49:19
Post Id



Гость


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


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




Ch_chov пишет:
скопировать код в буфер обмена

1.
$user["keys"])=='""'

А что это значит. В массиве могут быть значения с в виде двух кавычек?
Ошибся.
удаляются пустые значения.
 
 Top
krivetko-man
Отправлено: 19 Января, 2010 - 15:54:51
Post Id


Новичок


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


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




Можно воспользоваться array_filter с функцией-обработчиком, которая будет собирать строку $infoUser, объявденную вне её, а также возвращать FALSE для пустых элементов.
 
 Top
Ch_chov
Отправлено: 19 Января, 2010 - 15:56:47
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2121
Дата рег-ции: Июль 2008  
Откуда: из города


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




PHP:
скопировать код в буфер обмена
  1. foreach ($user as $k => $v)
  2.   if(!empty($v)) $infoUser[] = $k.' = '.$v;
  3. $infoUser = implode(', ', $infoUser);
 
 Top
JustUserR
Отправлено: 19 Января, 2010 - 16:04:10
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


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




Данный вариант сразу формирует строку из непустых элементов массива и сразу чистит массив от пустых элементов
PHP:
скопировать код в буфер обмена
  1. foreach ($user as $keys=>$values)  {
  2. if((empty($user["$keys"]))||(($user["keys"])==""))   {unset($user["$keys"]);}
  3. else {$infoUser.=$keys."=".$values.", ";}
  4. echo $infoUser;

PS Опять номера строк копируются в буфер обмена


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
movEAX
Отправлено: 19 Января, 2010 - 16:25:36
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 750
Дата рег-ции: Авг. 2009  


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




PHP:
скопировать код в буфер обмена
  1. // удаляем пустые элементы массива
  2. $user = preg_grep('!.!',$user);
  3. foreach($user as $k=>$v) $infoUser.=$k.'='.$v.', ';


-----
армия.. самое убогое место
 
 Top
RomAndry Администратор
Отправлено: 19 Января, 2010 - 16:32:28
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 913
Дата рег-ции: Янв. 2008  


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




JustUserR пишет:
PS Опять номера строк копируются в буфер обмена

НЕ должно =)
 
My status
 Top
Stierus Супермодератор
Отправлено: 19 Января, 2010 - 17:14:57
Post Id



Рекордсмен по количеству сообщений за 7 дней


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


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




Цитата:
foreach ($user as $keys=>$values) {
if((empty($user["$keys"]))


это круто Улыбка
 
My status
 Top
leshiy_SV
Отправлено: 20 Января, 2010 - 08:38:15
Post Id



Гость


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


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




А можно ли как нибудь по другому сделать привести к такому выводу?
movEAX пишет:
1. // удаляем пустые элементы массива
2. $user = preg_grep('!.!',$user);
3. foreach($user as $k=>$v) $infoUser.=$k.'='.$v.', ';
А как можно этот код доработать чтобы и значения, равные нулю, тоже удалялись?
(Добавление)
Вот так правильно будет?
CODE (htmlphp):
скопировать код в буфер обмена
  1. preg_grep('![1-9a-zA-Zа-яА-Я]!',$user);
чтобы пустые и значения, равные нулю, не брались

(Отредактировано автором: 20 Января, 2010 - 08:57:09)

 
 Top
JustUserR
Отправлено: 20 Января, 2010 - 10:20:23
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


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




leshiy_SV пишет:
Вот так правильно будет?
В принципе правильно но будут идти специфическая выборка - то есть значения из спецсимволом тоже будут удаляться (Да и русский язык зависит от кодировки и может плохо работать)
Не проще ли все-таки оставить циклом Улыбка


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
movEAX
Отправлено: 20 Января, 2010 - 11:06:18
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 750
Дата рег-ции: Авг. 2009  


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




leshiy_SV пишет:
А можно ли как нибудь по другому сделать привести к такому выводу?

PHP:
скопировать код в буфер обмена
  1. $user = preg_grep('![^0]!', $user);
  2. foreach($user as $k=>$v) @$infoUser.=$k.'='.$v.', ';


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


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB