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]   

> Без описания
Heger
Отправлено: 22 Июня, 2016 - 12:18:32
Post Id


Новичок


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


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




Добрый день, я новичок поэтому не обессудьте, а помогите Воздушный шарик
В базе записана строка $str как текст, как из этой строки зная номер d выдергивать его значения

Ключей d множество, как например получить значение d5? Тоесть чтобы было:
 
 Top
Sail
Отправлено: 22 Июня, 2016 - 13:04:43
Post Id



Участник


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


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




Heger, например, так:
PHP:
скопировать код в буфер обмена
  1. $str = "d3=5,d4=3,d5=7,d8=1";
  2. $arr = explode(',', $str);
  3. $arrStr = array();
  4. foreach($arr as $value) {
  5.     $arr2 = explode('=', $value);
  6.     $arrStr[$arr2[0]] = $arr2[1];
  7. }
  8. extract($arrStr);
  9. echo $d5;
 
 Top
Heger
Отправлено: 22 Июня, 2016 - 13:12:33
Post Id


Новичок


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


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




Спасибо, уже разобрался сам используя логическое выражение
PHP:
скопировать код в буфер обмена
  1. $str = "d3=5,d4=3,d5=7,d8=1";
  2. $id = 5; // или любая другая известная цифра d3, d4, dn...
  3. preg_match("/(d".$id."=)(\d+)/i", $str, $matches);
  4. echo = $matches[2]; //7
 
 Top
ParadigmX
Отправлено: 02 Августа, 2016 - 02:37:43
Post Id



Новичок


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


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




О а не подскажите пожалуйста как в этом случае сделать обратную задачу, не вытянуть а заменить значение, у меня тоже подобная задача.
Допустим у меня есть файл с конфигурациями

max_item_mass = 500.0
jump_speed = 6.
crouch_coef = 0.45
climb_coef = 0.7


Мне нужно вынести значение 500.0 из max_item_mass
А затем заменить его на нужное мне например 100000

Я новичок, начал экспериментировать
Заменять по координатам но возникло куча проблем с длиной и тд.
PHP:
скопировать код в буфер обмена
  1. $text1 = substr_replace($text, "$zamena", $poz, $dlina);

А с регулярными выражениями я еще не разобрался)
Если можно то поподробней опишите действия, спасибо)

(Отредактировано автором: 02 Августа, 2016 - 02:52:44)

 
 Top
Мелкий Супермодератор
Отправлено: 02 Августа, 2016 - 09:12:23
Post Id



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


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


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




ParadigmX пишет:
файл с конфигурациями

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

Пока по виду похож на ini. http://php.net/manual/en/functio...rse-ini-file.php функцию записи обратно php, почему-то, не имеет, подберите какой-нибудь вариант из комментариев, там есть несколько.


-----
PostgreSQL DBA
 
 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