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]   

> Без описания
kuller
Отправлено: 08 Ноября, 2015 - 03:08:18
Post Id



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


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


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




У меня голова сейчас зарвется уже!!! Огорчение не могу не как решить задачку. Помогите пожалуйста. Есть строка с именем и фамилией.

пример
Иванов Иван Сидоров Петр Пупкин Гена

Как вот из такой строчки сделать массив? или может массив не обязательно делать... мне надо после каждого имени поставить запятую

CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. [0] => Иванов Иван
  3. [1] => Сидоров Петр
  4. [2] => Пупкин Гена
  5. )
  6.  

(Отредактировано автором: 08 Ноября, 2015 - 03:31:59)

 
 Top
Viper
Отправлено: 08 Ноября, 2015 - 12:03:18
Post Id



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


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


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




kuller пишет:
Как вот из такой строчки сделать массив?
привести в нормальный вид с разделителями. Иначе злобный геморой вы себе нашли.


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
Flash_PR
Отправлено: 08 Ноября, 2015 - 12:43:42
Post Id



Посетитель


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


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




Потребовалось 20 мин только из-за того, что регулярные выражения "не в зуб ногой", Возможно ругулярку могут и получше написать знающие люди, я не претендую на лучшее решение, во всяком случае, это работающее рещение.

PHP:
скопировать код в буфер обмена
  1. $string = 'Иванов Иван Сидоров Петр Пупкин Гена';
  2. $pattern = "/(\w+) (\w+) /iu";
  3.  
  4. $result =  preg_replace($pattern, '$1 $2,', $string);
  5. echo $result;
  6.  
  7. $arr = explode(',', $result);
  8. print_r($arr);

(Отредактировано автором: 08 Ноября, 2015 - 12:56:56)



-----
Умные мысли приходят тогда, когда все глупости уже сделаны...
 
My status
 Top
Viper
Отправлено: 08 Ноября, 2015 - 13:19:34
Post Id



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


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


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




Flash_PR пишет:
Потребовалось 20 мин только из-за того, что регулярные выражения "не в зуб ногой",
ага.
"Иванов Иван Иванович Сидоров Петр Пупкин Гена Васильевич" пробуйте дальше Улыбка


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



Посетитель


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


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




Viper пишет:
"Иванов Иван Иванович Сидоров Петр Пупкин Гена Васильевич" пробуйте дальше

ТС представил конкретную строку фамилия+имя, к нему и применял шаблон, если будут в разнобой ФИО, потом ФИ, потом снова ФИО, то конечно не пройдет шаблон. При неоднородных данных я даже не представляю решения, но как говорится, есть конкретные данные, есть конкретное решение.

(Отредактировано автором: 08 Ноября, 2015 - 13:38:33)



-----
Умные мысли приходят тогда, когда все глупости уже сделаны...
 
My status
 Top
Tyoma5891
Отправлено: 08 Ноября, 2015 - 13:41:14
Post Id


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


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


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




PHP:
скопировать код в буфер обмена
  1. $string = 'Иванов Иван Сидоров Петр Пупкин Гена';
  2. $arr = explode(" ", $string);
  3.  
  4. foreach ($arr as $k=>$v)
  5. {
  6.  
  7.         if ($k%2!=0)
  8.         {
  9.                 $v .= ",";
  10.                 $data[]=$v;
  11.         }else{
  12.         $data[]=$v;
  13.         }
  14. }
  15. echo implode(" ", $data);
 
 Top
armancho7777777 Супермодератор
Отправлено: 08 Ноября, 2015 - 15:36:38
Post Id



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


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


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




Tyoma5891
Возможно Вы подразумевали что-то похожее:
PHP:
скопировать код в буфер обмена
  1. $string = 'Иванов Иван Сидоров Петр Пупкин Гена';
  2. $data = array();
  3.  
  4. foreach (explode(" ", $string) as $k=>$v) {
  5.     $data[] = ++$k % 2 ? $v : ($v . ' ' . array_pop($data));
  6. }
  7.  
  8. print_r($data);
 
 Top
kuller
Отправлено: 09 Ноября, 2015 - 06:21:47
Post Id



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


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


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




Да действительно у меня встречаются такие моменты где еще и отчество написано Нахмурился
а можно же сделать определение на четное не четное количество ключей в массиве, и если количество не четное, допустим убрать последний ключ массива...

Хотя нет... бред получается если в таком порядке будет "Сидоров Петр Иванов Иван Иванович Пупкин Гена"

(Отредактировано автором: 09 Ноября, 2015 - 06:25:48)

 
 Top
Viper
Отправлено: 09 Ноября, 2015 - 11:44:52
Post Id



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


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


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




kuller отож. Я сразу сказал, что нормализуйте данные. Т.к. на данный момент вам потребуется набор имён для сравнения.


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



Посетитель


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


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




kuller пишет:
а можно же сделать определение на четное не четное количество ключей в массиве, и если количество не четное, допустим убрать последний ключ массива...

Хотя нет... бред получается если в таком порядке будет "Сидоров Петр Иванов Иван Иванович Пупкин Гена"

Я плачу, вы хоть думаете что пишите? Если данные неоднородные, может легче проставить запятые перед формирование строки с ФИО? Из чего то она делается?


-----
Умные мысли приходят тогда, когда все глупости уже сделаны...
 
My status
 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