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]   

> Описание: 1{Andrea}|7{Amy}|9{John}
Viper
Отправлено: 27 Января, 2010 - 13:56:31
Post Id



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


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


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




Есть строка вида
CODE (htmlphp):
скопировать код в буфер обмена
  1. 1{Andrea}|7{Amy}|9{John}

первый параметр id записи, второй просто текст.

нужно отделить все id от котлет и собрать в строку вида 1,7,9 (будет участвовать в IN)
и то что в фигурных скобках вывести отдельно в массив.
несколько туманно...

... в таблице запись 1{Andrea}|7{Amy}|9{John} выбрали.
далее нужно выбрать из другой таблицы записи с id 1,7,9 (к примеру получаем:
1, Farelly
2, Adams
3, Doe)
далее в цикле вывести эти записи, но так чтобы было соответствие
1, Andrea, Farelly
7, Amy, Adams
9, John, Doe

Как такое соорудить?


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
JustUserR
Отправлено: 27 Января, 2010 - 14:06:51
Post Id



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


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


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




Viper Примерно с помощью такого кода
PHP:
скопировать код в буфер обмена
  1. $v_str="1{Andrea}|7{Amy}|9{John}";
  2. $all_sect=explode('|',$v_str);
  3. $res_arr=array();
  4. for($i=0;$i<count($all_sect);i++)
  5. {list($id,$name)=explode('{',$all_sect[$i]);
  6. $name=str_replace("}","",$name);
  7. if(!res_arr["$id"]) {res_arr["$id"]=array();} else {}
  8. res_arr["$id"][]=$name;}
  9. forearch($res_arr as $cid=>$vals)
  10. {echo $cid." : ".implode(',',$vals);
  11. }
Если таких строк много то они легко объединяются по ID путем копирования кода с 3 по 7 строку для каждой из таких строк (Или просто их загнать в массив)


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



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


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


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




сейчас почему-то стало вылазить
CODE (htmlphp):
скопировать код в буфер обмена
  1. Notice: Undefined index: 1 in D:\WWW\htdocs\local...
  2. Notice: Undefined index: 7 in D:\WWW\htdocs\local...
  3. Notice: Undefined index: 9 in D:\WWW\htdocs\local...


ругня на строку if (!$res_arr[$id]) {

PHP:
скопировать код в буфер обмена
  1. $all_sect = explode('|', $p_name);
  2. $res_arr = array();
  3.  
  4. for ($i=0; $i<count($all_sect); $i++) {
  5.         list($id, $name) = explode('{', $all_sect[$i]);
  6.         $name = str_replace('}', '', $name);
  7.         if (!$res_arr[$id]) {
  8.                 $res_arr[$id] = array();
  9.         } else {}
  10.         $res_arr[$id][] = $name;
  11. }
  12. $ids =  implode(',', array_keys($res_arr));
  13. $database->setQuery("SELECT `id` FROM `#__personal` WHERE `id` IN ($ids) AND `published` = '1' AND `access` <= '$my->gid'");


что не так?


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
SAD
Отправлено: 30 Января, 2010 - 09:39:27
Post Id



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


Покинул форум
Сообщений всего: 2508
Дата рег-ции: Май 2009  
Откуда: Днепропетровск, Украина


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




если работает, то те notice - не ошибки, а замечания.
 
 Top
Мелкий Супермодератор
Отправлено: 30 Января, 2010 - 09:53:07
Post Id



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


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


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




Viper пишет:
ругня на строку if (!$res_arr[$id]) {

Хочет, чтобы переменную на isset проверяли.


-----
PostgreSQL DBA
 
 Top
Viper
Отправлено: 30 Января, 2010 - 10:11:16
Post Id



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


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


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




SAD пишет:
если работает, то те notice - не ошибки, а замечания.

ага. но я стараюсь чтобы их не было. Улыбка

Мелкий пишет:
Хочет, чтобы переменную на isset проверяли.


спасибо за наводку. сделал проверку - все гуд теперь!


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
PeaceDuke
Отправлено: 30 Января, 2010 - 13:52:13
Post Id



Новичок


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


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

[+]


CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2.  
  3. <?
  4. $text = "1{Andrea}|7{Amy}|9{John}";
  5. $text = explode('|', $text);
  6. $count = count($text);
  7. $i = 0;
  8. while ($i <= $count) {
  9. $text[$i] = preg_replace('/^([0-9]){(.*?)}(|)/', '<b>\1</b>,', $text[$i]);
  10. $text_all = $text_all.$text[$i];
  11. $i++;}
  12. echo $text_all;
  13. ?>
  14. © Wakko and Peake Duke
  15.  

(Отредактировано автором: 30 Января, 2010 - 14:25:54)



-----
[Coder] and [Designer]
 
 Top
JustUserR
Отправлено: 31 Января, 2010 - 01:22:49
Post Id



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


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


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




PeaceDuke Исходной задачей было вроде бы не убирание скобок и щнаков конвеера - а распределение данных по массиву - и тем более с функцией добавления записей с одинаковым ID в один и тот же подмассив
Viper Что касается notice-ов то вероятно имеются неиспользованные или неопределенные переменные - если вы немного исправляли мой код то вероятно изменили название массива и он создался автоматически и выдался notice Улыбка


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 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