Замена элемента в ассоциативном массиве

Lithium366

Новичок
Замена элемента в ассоциативном массиве

Есть массив вида:

array(10) {
["Ink Color"]=>
string(4) "Blue"
["Alignment"]=>
string(4) "Left"
["Print Style"]=>
string(15) "Arena Condensed"
["Print Size"]=>
string(8) "Best Fit"
["Case"]=>
string(35) "Upper and Lowercase Text as entered"
["Bold Option"]=>
string(13) "No Lines Bold"
["Italics Options"]=>
string(19) "No Lines Italicized"
["Add Ideal Refill Ink"]=>
string(13) "No Refill Ink"
["Id"]=>
string(2) "15"
["Line 1"]=>
string(7) "Kosm 36"
}

Нужно заменить ключ Print Size и значение, но так, чтобы элемент остался на том же месте. Думал array_splice, но ведь там нужно знать позицию
 

Dovg

Продвинутый новичок
Например
PHP:
$temparr = array();
foreach ($myarr as $key => $value ) {
  if ($key=='Print Size') {
    $temparr['newkey'] = $newvalue;
  }
  else {
   $temparr[$key]=$value
  }
}
$myarr = $temparr
А зачем порядок элементов в ассоциативном массиве?
 

Lithium366

Новичок
тут дело в том, что есть куча форм, которые хранятся в файлах. Поля в этих формах называются соответственно тому, как они потом должны выводиться в письме, к примеру print_size_required. Концовка названия для валидатора. Когда данные с формы поступают в скрипт мне нужно убрать все валидационные префиксы, разделить все слова по "_" и сделать каждую первую букву заглавной. На данный момент делаю новый элемент, а старый unset, но с кучей всяких проверок меняется порядок следования. Он важен, т.к. данные в письме админу должны приходить в том же порядке, в котором стоят элементы формы
 

dimagolov

Новичок
Lithium366, делайте шаблон письма, в котором к примеру $varname - заменяемые значения, а потом
PHP:
foreach($ValArray as $varname => $varvalue)
$Body= str_replace ($varname , $varvalue, $Body);
 

weregod

unserializer
можно написать свою ф-цию, которая заменяет ключ и значение, стандартными средствами, кажется, нельзя решить...
 

Lithium366

Новичок
Да я уже так и делаю. Разбиваю на 2 массива. до и после нужного элемента, а потом мержу
 

YasonDelAlt

Новичок
Lithium366
может лучше организовать форматирование в выходную строку таким образом:
PHP:
$tpl = 'key1 key3 key2'; // keyN - ключ массива
$out = str_replace (array_keys($array) , array_values($array), $tpl);
в $out будут значения элементов массива в порядке, указанном в строке $tpl.
 
Сверху