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

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

1. magister - 11 Мая, 2016 - 17:18:53 - перейти к сообщению
Есть текст к примеру: Вова-слесарь
Петя-электрик
Света-дизайнер
Нужно преобразовать текст а ассоциативный массив (ключ Вова => значение слесарь)
Подскажите как это сделать. Преречень - то txt файл.
2. caballero - 11 Мая, 2016 - 20:01:41 - перейти к сообщению
очевидно присвоить элементу массива
А в чем проблема?
не найдете в докуметации что такое массивы или как файл прочитать?
3. Строитель - 11 Мая, 2016 - 21:32:50 - перейти к сообщению
magister пишет:
Нужно преобразовать текст а ассоциативный массив (ключ Вова => значение слесарь)
Имя файла base.txt замените на имя вашего текст.файла с данными
PHP:
скопировать код в буфер обмена
  1. $arr = [];
  2. foreach (file('base.txt') as $val) {
  3.     list($name, $prof) = explode('-', $val);
  4.     $arr[$name] = $prof;
  5. }
  6.  
  7. echo '<pre>'; print_r($arr);
  8.  
  9. /*
  10.  
  11. Array
  12. (
  13.     [Вова] => слесарь
  14.  
  15.     [Петя] => электрик
  16.  
  17.     [Света] => дизайнер
  18.  
  19. )
  20.  
  21. */
4. armancho7777777 - 11 Мая, 2016 - 22:07:58 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. $regexp = '/(?<=^|\r\n|\n)(.+)-(.+)(?=\r?\n|$)/';
  2. preg_match_all($regexp, file_get_contents('data.txt'), $m);
  3. print_r(array_combine($m[1], $m[2]));

(Добавление)
magister пишет:
Преречень - то txt файл.

И почему не ini ?
CODE (txt):
скопировать код в буфер обмена
  1. Вова=слесарь
  2. Петя=электрик
  3. Света=дизайнер

PHP:
скопировать код в буфер обмена
  1. print_r(parse_ini_file('data.ini'));
5. magister - 12 Мая, 2016 - 09:05:39 - перейти к сообщению
[quote=Строитель][/quote] Спасибо, и ваш и другой метод подошли.
(Добавление)
armancho7777777 пишет:
PHP:
скопировать код в буфер обмена
  1. $regexp = '/(?<=^|\r\n|\n)(.+)-(.+)(?=\r?\n|$)/';
  2. preg_match_all($regexp, file_get_contents('data.txt'), $m);
  3. print_r(array_combine($m[1], $m[2]));

(Добавление)
magister пишет:
Преречень - то txt файл.

И почему не ini ?
CODE (txt):
скопировать код в буфер обмена
  1. Вова=слесарь
  2. Петя=электрик
  3. Света=дизайнер



Спасибо

 

Powered by ExBB FM 1.0 RC1