alekciy
Новичок
Возможно ли заменить ключ массива не изменяя порядок следования элементов в массиве?
Собственно возможно ли это?
Понятное дело, что можно создать новый массив, пройтись по старому foreach'ем и скопировать все элеметны со старыми индексами, а нужный с новым (порядок тогда сохранится).
После некоторых эспериментов и листания манов я пришел к такому коду:
НО!!!
Может быть нечно подобное уже было?
Собственно возможно ли это?
Понятное дело, что можно создать новый массив, пройтись по старому foreach'ем и скопировать все элеметны со старыми индексами, а нужный с новым (порядок тогда сохранится).
После некоторых эспериментов и листания манов я пришел к такому коду:
PHP:
<?php
$fruits = array (
"a" => array('Петя', 'Камушкин'),
"b" => array('Вася', 'Иванов'),
"q" => array('Изя', 'Шниперсон'),
"c" => array('Феля', 'Урюканский')
);
print "Исходный массив<br>";
foreach ($fruits as $key => $val) {
print "Поле: ".$key." значение: ".$val."<br>";
};
$source="q";
$new=array ("s" => array('Изя', 'Шниперсон'));
$count=count($fruits);
reset ($fruits);
for ($i=0; $i<$count; $i++) {
if (key($fruits) == $source) {
array_splice ($fruits, $i, 1, $new);
};
next ($fruits);
};
print "<br>";
print "Конечный массив<br>";
foreach ($fruits as $key => $val) {
print "Поле: ".$key."<br>";
foreach ($val as $k => $v) {
print "Поле: ".$k." значение: ".$v."<br>";
};
};
?>
Если бы не это, то все бы работало на ура. А так как изменить значение ключа с "0" на заданный я не знаю. Разве только обратиться к разработчику PHP с просьбой/предложением иметь возможность сохранению ключа (к примеру добавив для для функции array_splice ещё один параметр булевого типа).Обратите внимание, что ключи массива replacement не сохраняются.
Может быть нечно подобное уже было?
