Приветствую! Тяжеловато мне даётся PHP.. :lol: Подскажите код, чтоб из строки сделать ассоциативный массив Код (Text): $string = "i1:1|i2:2|i3:3"; нужно: Код (Text): $string2 = array ("i1" => "1", "i2" => "2", "i3" => "3"); заранее спасибо ) :roll:
а строка откуда берется? м.б. ее можно привести к формату, в котором ассоциированные массивы преобразовывает ф-ция serialize ?
Код (Text): <?php $string = 'i1:1|i2:2|i3:3'; $array1 = array(); $array2 = explode('|', $string); foreach($array2 as $str) { list($key, $value) = explode(':', $str); $array1[$key] = $value; } echo('<pre>'); print_r($array1); echo('</pre>'); ?> Вывод Код (Text): Array ( [i1] => 1 [i2] => 2 [i3] => 3 )
Новая проблема ))) Теперь есть строка PHP: $str2 = i2:2 как проверить старую строку на наличие элемента i2, и, если он есть, увеличить соседнее значение i2:x проще говоря, на входе есть PHP: $string = "i1:1|i2:2|i3:3"; $str2 = i2:2 а на выходе должно быть PHP: $string = "i1:1|i2:[b]4[/b]|i3:3"; я заступорился на моменте деления строки уже по :
S.t.A.M. Все норм, чел просто еще функции не выучил F1do Вот тебе учебный (максимально подробный) пример, разбирайся: PHP: <?php $string = "i1:1|i2:2|i3:3"; if(substr_count($string,'i2')) //Если в строке есть i2 { $position = strpos($string,'i2'); //Находим положение i2 $position_n = $position+3; //Значение i2 будет на 3 символа дальше $value=substr($string,$position_n,1); //Получаем значение i2 $value++; //Увеличиваем значение $string=substr_replace($string,$value,$position_n,1); //Заменяем старое значение на новое } echo $string;
S.t.A.M. жжошь.. )) [vs] спасибо, буду курить ) UPD ага, сразу заметно, что если там больше 1 цифры, то будет неправильно ) видимо, всё-таки массивы ) UPD 2 уже пробовал и strtok ();, чтоб получать след. элемент через next (); )) UPD 3 ааа как всё просто-то )))) PHP: <? $old_inv_arr = array (); $old_inv_arr2 = explode('|', $old_inv); foreach($old_inv_arr2 as $str) { list($item, $value) = explode(':', $str); $old_inv_arr[$item] = $value; if ($item == $itemid) { $in_inv = 1; $nums = $value; } // value это оно и есть, теперь только нужно записать это обратно в строку ) }