Добавить в масив значение, но не в конец

ForJest

- свежая кровь
xionik
Я объясню ещё раз, если эта простая мысль не доходит до сознания:
1. Спрашивает человек. Он хочет получить ответ
2. Этот человек уже решает - подходит ему решение или нет. Именно этот человек.
3. Моё решение работает, и делает именно то что нужно.
--------------------------------
В целом могу дать ценный совет - умерь свой пыл.
 

IvanShumkov

Новичок
ForJest
PHP:
foreach(array_keys($array) as $key)
Он будет при каждой интерации array_keys($array) делать ?
Может тогда?
PHP:
$array = array_keys($array);
foreach($array as $key)
 

ForJest

- свежая кровь
IvanShumkov
Ну вот сделай сразу перебором и потом можешь заменить стандартным, если найдёшь :). Тебе шашечки или преждевременно оптимизировать?
 

SelenIT

IT-лунатик :)
А если "в лоб" скомпоновать аналог array_splice для асс. массивов (на что, возможно, намекал alexhemp)?
PHP:
function array_asplice (&$input, $offset, $length=0, $replacement=array()) {
    array_splice($keys = array_keys($input), $offset, $length, array_keys($replacement));
    array_splice($values = array_values($input), $offset, $length, array_values($replacement));
    $input = array_combine($keys, $values); // если PHP5
    //$input = array(); foreach ($keys as $pos=>$key) $input[$key] = $values[$pos]; // если PHP4
    return $input;
}

// пример использования

$array = array(
'button1' => 1,
'button3' => 3,
);

// вызывается и ведет себя как обычная array_splice
array_asplice($array, 1, 0, array('button2'=>2));

print_r($array);
 

xionik

Новичок
ForJest
ок. еще только один вопрос, думаю он будет интересен не только мне: почему модераторам разрешено флудить без меры (Фанат, да и ты за последние полтора часа написал постов, не меньше моего), но просить умерить пыл вас не получается? Если будешь банить - тотально глупо...
 

ForJest

- свежая кровь
xionik
Я тебе просто разъяснил несколько моментов, для твоего же блага. И, заметь - я просто разъяснил и дал ценный совет :).
Воспользуешься им ты или нет - дело твоё. Но я ещё раз тебе объясню вещи которых тебе не нужно делать:
1. Заменять собою спрашивающего - потому что он знает лучше тебя что ему нужно.
2. Заменять собою модератора - потому что модераторы уже есть.
3. Писать сообщения лишь для того, чтобы писать сообщения.
4. Раздувать скандалы и разводить флуд :).
---------------------------------
Всё это я написал не для того, чтобы угрожать тебе (или нечто подобное), а исключительно для твоего же собственного блага, поверь. Давай же сделаем так, чтобы моя разъяснительная работа не пошла прахом, хорошо?
 

xionik

Новичок
ForJest хорошо. спасибо за откровенность. буду пытаться придерживаться этих четырех правил.
 

ForJest

- свежая кровь
IvanShumkov
Вообще почему бы тебе не изменить структуру данных?
PHP:
$array = array( 
array( 'name'=> 'button1', 'num'=> 1), 
array( 'name'=> 'button2', 'num'=> 2), 
);
таким образом ты сможешь воспользоваться всеми преимуществами нумерованных массивов.
 

IvanShumkov

Новичок
ForJest
Это да, но не могу воспользоватся потом всеми приемуществами ассоциативного массива: $array[$_POST[$name]]
 

svetasmirnova

маленький монстрик
IvanShumkov
>array_splice с ассациативными масивами не умеет работать.
Я в курсе каким образом array_splice работает с ассоциативными массивами.
>Перебором то проблем нет, думал можно стандартными функциями php сделать
одной функцией нельзя: перепроектируй приложение лучше, если можно перепроектировать
 

MasterSID

Новичок
Мне кажется для определения порядка лучше не использовать ассоциативный массив.

Если я тебя правильно понял, может это подойдет:
PHP:
$button[1]=array("caption"=>"button1", "type"=>2);
$button[3]=array("caption"=>"button3", "type"=>1);

if ($page == 'edit') 
{ 
      $button[2]=array("caption"=>"button2", "type"=>4);
}
 
Сверху