2012-03-31 11 views
2

私が持っていると連想配列はこのように見える:連想配列で新しいキーを作成し、それに値を追加

array(225) { 
    [0]=> 
    array(3) { 
    ["id"]=> 
    string(1) "1" 
    ["firstname"]=> 
    string(2) "me" 
    ["lastname"]=> 
    string(2) "ab" 
    [1]=> 
    array(3) { 
    ["id"]=> 
    string(1) "2" 
    ["firstname"]=> 
    string(3) "you" 
    ["lastname"]=> 
    string(2) "bc" 

あなたはすべての要素の構造が同じであることがあります。私は何をしたいネストされた配列でdynamiclly新しいキー、このようなものを作成することです:

array(225) { 
     [0]=> 
     array(4) { 
     ["id"]=> 
     string(1) "1" 
     ["firstname"]=> 
     string(2) "me" 
     ["lastname"]=> 
     string(2) "ab" 
     ["newKey"]=> 
     string() "1,2,3,....n" 
     [1]=> 
     array(3) { 
     ["id"]=> 
     string(1) "2" 
     ["firstname"]=> 
     string(3) "you" 
     ["lastname"]=> 
     string(2) "bc" 
     ["newKey"]=> 
     string() "1,2,3,....x" 

を、私は[「NEWKEY」]キーと値に新しいレコードを追加しますが、そのようにしたいです古い値は削除されませんが、上記のように、新しい値はすべてカンマで区切ります。

私はarray_pushを試しましたが、他のいくつかのことを試しましたが、私が望む正確な結果を得ることはできません。

function addField(array &$aData, $newVal) 
{ 
    foreach($aData as $aUnit) 
     if(array_key_exists('newKey', $aUnit)) 
      $aUnit['newKey'] .= ",$newVal"; 
     else 
      $aUnit['newKey'] = '1'; 
} 

は、あなたがそれをすると拡大したい場合は、それがない場合は、私に教えてください:私はそれがトリックを行う可能性がありますあなたが望むかなり何ですが、このようなもののように思えるかどうかを知りません

答えて

3

あなたを圧倒するのに十分なベース。

+0

これはまさに私が必要としていたものです。私は、リファレンスからの必要性をあまり理解していませんが、それは理論的な質問のようです。 – Leron

+0

この参照は、配列のコピーが作成されないようにします。代わりに、参照渡しを持たないことがあります。この場合、関数への呼び出しは '$ aData = addField($ aData、5);'のようになります。そこには、新しい配列を作成して、既存の配列を変更するのではなく、古い配列を置き換えることになります。 – quickshiftin

+1

ありがとう、この情報は便利でした! – Leron

関連する問題