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 » » Хранение данных, их вывод и обработка » Как из строки сделать массив и выдергивать значения по ключу

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

1. Heger - 22 Июня, 2016 - 12:18:32 - перейти к сообщению
Добрый день, я новичок поэтому не обессудьте, а помогите Воздушный шарик
В базе записана строка $str как текст, как из этой строки зная номер d выдергивать его значения

Ключей d множество, как например получить значение d5? Тоесть чтобы было:
2. Sail - 22 Июня, 2016 - 13:04:43 - перейти к сообщению
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;
3. Heger - 22 Июня, 2016 - 13:12:33 - перейти к сообщению
Спасибо, уже разобрался сам используя логическое выражение
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
4. ParadigmX - 02 Августа, 2016 - 02:37:43 - перейти к сообщению
О а не подскажите пожалуйста как в этом случае сделать обратную задачу, не вытянуть а заменить значение, у меня тоже подобная задача.
Допустим у меня есть файл с конфигурациями

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);

А с регулярными выражениями я еще не разобрался)
Если можно то поподробней опишите действия, спасибо)
5. Мелкий - 02 Августа, 2016 - 09:12:23 - перейти к сообщению
ParadigmX пишет:
файл с конфигурациями

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

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

 

Powered by ExBB FM 1.0 RC1