Как добавить значение массива в середину ассоциативного массива? - PullRequest
24 голосов
/ 27 января 2010

Допустим, у меня есть этот массив:

$array = array('a'=>1,'z'=>2,'d'=>4);

Позже в скрипте я хочу добавить значение 'c'=>3 перед 'z'. Как я могу это сделать?

Да, порядок важен. Когда я запускаю foreach () через массив, я НЕ хочу, чтобы это новое добавленное значение добавлялось в конец массива. Я получаю этот массив из mysql_fetch_assoc ()

Ключи, которые я использовал выше, являются заполнителями. Использование ksort () не приведет к тому, что я хочу.

http://www.php.net/manual/en/function.array-splice.php#88896 выполняет то, что я ищу, но я ищу что-то попроще.

Возьмите пример таблицы в БД с примерно 30 столбцами. Я получаю эти данные с помощью mysql_fetch_assoc (). В этом новом массиве после столбца «пицца» и «напиток» я хочу добавить новый столбец «full_dinner», который объединяет значения «пицца» и «напиток», чтобы при запуске foreach () в указанном массиве «full_dinner» идет сразу после «drink»

Ответы [ 13 ]

0 голосов
/ 27 января 2010

Вы можете добавить его, выполнив

$array['c']=3;

и, если вы абсолютно хотите, чтобы он был отсортирован для печати, вы можете использовать функцию php ksort ($ array)

если ключи не сортируются командой ksort, вам придется создать собственную сортировку с помощью функции uasort в php. см. примеры здесь

http://php.net/manual/en/function.uasort.php

0 голосов
/ 27 января 2010

Ассоциативные массивы не упорядочены, поэтому вы можете просто добавить с помощью $array['c'] = 3.

Если важен порядок, одним из вариантов является переключение на структуру данных, например:

$array = array(
   array('a' => 1),
   array('b' => 2)
   array('d' => 4)
);

Затем используйте array_splice($array, 2, 0, array('c' => 3)) для вставки в позицию 2. См. Руководство по array_splice .

0 голосов
/ 27 января 2010

Попробуйте это

$array['c']=3;

Ассоциативный массив не упорядочен по умолчанию, но если вы хотите отсортировать их по алфавиту, вы можете использовать ksort() для сортировки массива по его ключу.

Если вы прочитаете статью PHP для ksort(), вы поймете, что легко отсортировать массив по его ключу, например:

<?php
$fruits = array("d"=>"lemon", "a"=>"orange", "b"=>"banana", "c"=>"apple");
ksort($fruits);
foreach ($fruits as $key => $val) {
    echo "$key = $val\n";
}
?>

// The above example will output:
a = orange
b = banana
c = apple
d = lemon
...