2010-12-02 15 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

'$ arr + = array( 'name' => $ id);'を試しましたか? – stillstanding

+0

問題はちょうど私がばかげていることでした。 "$ arr [] = array();を実行しています基本的には+ = – Nathan

答えて

1

あなたはいくつかの問題を持っていますここに。

主に、同じインデックスを2回持つことはできません。 'name'は一度だけインデックスにすることができます。したがって、あなたは '望ましい'出力が不可能です。

はまた、この文は[] = $ xはプッシュのようなものですARR $の

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

使用はかなり問題があります。配列の後ろに新しい要素を追加します。数値的にインデックスが付けられます。

あなたはarray_mergeを使用する必要はありません。 array_mergeは、最初の引数にマージされた2番目の引数を返します。新しい要素を1つ追加するだけです。また、それはあなたが使った線か、使った線ですか?array_merge($arr, array('name' => $id)); ???

試してみてください。

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

そして、あなたが得る:

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

などなどを。私はこれがまさにあなたが望むものなのかどうかはわかりませんが、あなたが最初に提案したものは不可能です。

+0

と同じです。そうです、それは私が望んでいたものです。どのように私は混乱して、私はそれらがすべて同じインデックスに必要と思ったかわからない。私の悪い... – Nathan

+0

問題はありません。それがうまくいってうれしい。 –