2010-12-02 2 views
0

Я пытаюсь создать ассоциативный массив с динамическими данными и иметь некоторые проблемы.Вручную создание ассоциативного массива

Я хотел бы создать массив, который выглядит следующим образом, получая строки из запроса MySQL.

Array 
(
    [0] = Array 
    (
    [name] => First 
) 
    [1] = Array 
    (
    [name] => Second 
) 
    [2] = Array 
    (
    [name] => Third 
) 
    [3] = Array 
    (
    [name] => Fourth 
) 
    [4] = Array 
    (
    [name] => Fifth 
) 
) 

Я пытаюсь использовать array_merge, но это не дает мне результат, который я хочу. Array_merge, по-видимому, не работает так же внутри foreach, как и снаружи (я запускал один и тот же код с циклом и без него, не работая так, как мне нужно).

В принципе, это то, что я делаю в данный момент (который не работает):

foreach($idList as $id) 
{ 
    $arr[] = array_merge(array(), array('name' => $id)); 
} 

Это дает мне такой вывод:

Array 
(
    [0] = Array 
    (
     [name] => first 
    ) 
    [1] = Array 
    (
     [0] = Array 
     (
      [name] => first 
     ) 
     [name] => second 
    ) 
    [2] = Array 
    (
     [0] = Array 
     (
      [name] => first 
     ) 
     [1] = Array 
     (
      [0] = Array 
      (
       [name] => first 
      ) 
      [name] => second 
     ) 
     [name] => third 
    ) 
) 
+0

have u try '$ arr + = array ('name' => $ id);'? – stillstanding

+0

Проблема была в том, что я был глупым. "Выполнение $ arr [] = array();" по существу то же самое, что и + = – Nathan

ответ

1

У вас есть несколько вопросов Вот.

В основном вы не можете иметь один и тот же индекс дважды. «name» может быть индексом один раз и только один раз, поэтому вы «желаемый» выход невозможно.

Кроме того, это утверждение довольно проблематично

foreach($idList as $id) 
{ 
    $arr[] = array_merge(array(), array('name' => $id)); 
} 

Использование $ обр [] = $ х, как толчок. Он добавляет новый элемент в обратную сторону массива, индексируется численно.

Ваше использование array_merge не нужно. array_merge возвращает второй аргумент, объединенный над первым аргументом. Вы просто пытаетесь добавить один новый элемент. Кроме того, это именно то, что вы использовали или использовали array_merge($arr, array('name' => $id)); ???

Try:

foreach($idList as $id) 
{ 
    $arr[] = array('name' => $id); 
} 

И вы получите:

Array 
(
    [0] = Array 
    (
     [name] => first 
    ) 
    [1] = Array 
    (
     [name] => second 
    } 
.... 

И так далее. Я не уверен, что это именно то, что вы хотите, но то, что вы предложили в первую очередь, невозможно.

+0

Да, это то, чего я хотел. Не уверен, как я запутался и подумал, что мне нужны все они по одному и тому же индексу. Мой плохой ... – Nathan

+0

без проблем. рад, что это сработало. –

Смежные вопросы