Друзья, нужна помощь. Допустим есть массив: Код (Text): $country[36] = 'Китай'; $country[39] = 'Япония'; Нам надо в начало массива добавить элемент с строковым ключом Код (Text): $def['placeholder'] = 'Страны'; $result = $def+$country; Получаем: Код (Text): Array ( [36] => 'Китай'; [39] => 'Япония'; ['placeholder'] => 'Страны'; ) array_merge также не дает нужного результата. array_reverse c параметром true вообще не изменяет массив, без параметра работает, но результат не тот. Хотя нам нужно чтоб элемент placeholder был первым.
как вариант Код (PHP): $a = array( 36 => 'Китай', 39 => 'Япония', ); $b = array('placeholder' => 'Страны',); $c = array_combine( array_merge( array_keys($b), array_keys($a) ) ,array_merge($b,$a) ); но должно быть проще Добавлено спустя 4 минуты 32 секунды: хотя у меня даже ваше $result = $def+$country; нормально пашет
Можно так: Код (Text): <? $str = array("111", "222"); $keys = array_pad(array_keys($str), -(count($str) + 1), 'NewKey'); $str = array_pad($str, -(count($str) + 1), 'NewValue'); $str = array_combine($keys, array_values($str)); ?> В Вашем случае: Код (Text): <? $keys = array_pad(array_keys($country), -(count($country) + 1), 'placeholder'); $country = array_pad($country, -(count($country) + 1), 'Страны'); $country = array_combine($keys, array_values($country)); ?>
Спасибо! Оба решения сработали. Но использовал вариант на основе array_combine. Показался мне более ясным.
Код (PHP): $country[36] = 'Китай'; $country[39] = 'Япония'; $def['placeholder'] = 'Страны'; foreach($country as $k=>$v) $def[$k]=$v;