2011-07-27 10 views
-3

私はPHPで2つの配列をマージします。ここに私のコードはここで私は、データが、ここで印刷「0」を取得し、「1」PHPでarray_mergeに問題が発生していますか?

{"username":"ji5vajng","gender":"MALE","profilepic":"http:\/\/li336-153.members.linode.com\/services\/uploads\/users\/thumbs\/000000000000000Sunset.jpg","status":"1","nickname":"laddu","0":{"username":"i3vnbtcz","gender":"MALE","profilepic":"http:\/\/li336-153.members.linode.com\/services\/uploads\/users\/thumbs\/7BB46853-D79D-5E17-807F-FD0666AF21BBi3vnbtcz-2011-06-13 11:04:26 +0000.png","status":"1","nickname":"Cool"},"1":{"username":"oq5mjbvb","gender":"male","profilepic":"http:\/\/li336-153.members.linode.com\/services\/uploads\/users\/thumbs\/7BB46853-D79D-5E17-807F-FD0666AF21BBoq5mjbvb-2011-06-13 05:45:57 +0000.png","status":"1","nickname":""},"2":{"username":"ejzxm2oz","gender":"MALE","profilepic":"http:\/\/li336-153.members.linode.com\/services\/uploads\/users\/thumbs\/A0000015BAB1CAreceived_0.jpg","status":"1","nickname":"laddu"}} 
+7

あなたは –

+1

0と1があなたの配列のインデックスである例を提供することができます!配列を繰り返し編集し、配列のキーの名前を変更/変更することで、それらをいつでも変更できます。 – toopay

+0

iamは上記のコードを編集します。上記のコードを参照してください – narayana

答えて

-1

は、あなただけの配列の値を得るためにそれをするforeachしてから置くことができない

$message = array_merge($message2, $message1); 
echo json_encode($message); 

ですそれにjson_encode?あなたが記述何

foreach ($message as $value) { 
echo json_encode($value); 
} 
+1

これは、JSON配列になりません。JSON配列は、JSONでエンコードされた値の束であり、必要なものではありません。もうJavaScriptでこの結果を解析することはできません。 – KilZone

+0

@KillZone、質問者が値だけに到達できる方法を示しています。値を取得したい場合、配列全体を反復処理する必要があります。 – Orhan

+1

数値キーを表示せずにJSONでararyをエンコードすることはできません。 ** hakre **が示すように行うことができます。 JSONが* only *値をエンコードしたい場合は、個々の値をループしてエンコードするのではなく、 'json_encode(array_values($ message))'を実行する必要があります。 – KilZone

1

は配列が数値でない文字列キーを持っている場合、数字キーも同様にエンコードされます、json_encodeDocsの正常な動作です。

$message1 = array('foo'); 
$message2 = array('key' => 'bar'); 

$message = array_merge($message2, $message1); 
echo json_encode($message); # {"key":"bar","0":"foo"} 

これはjsonのオブジェクト表現です。

すべてのキーが数値である場合、それらは、エンコーディングの一部ではありません。

$message1 = array('foo'); 
$message2 = array('bar'); 

$message = array_merge($message2, $message1); 
echo json_encode($message); # ["bar","foo"] 

これはJSONの配列で表現したものです。

+1

注:すべてのキーが数値*で連続しており、*の順である場合、JSONの結果は配列になります。 'array(1 => 'foo'、0 => 'bar')' ... – deceze

+0

@deceze:['array_merge'](http://php.net/manual/en/function.array-merge。 php)は、入力配列に数値キーしかない場合はそれを処理します。あなたの情報は一般的には良いヒントですが、上記の2番目のコード例では関連性がありません*数値キーは 'array_merge'によって再番号付けされます – hakre

0

私はその結果に間違っているとは思わない。あなたのマージされた配列がどうあるべきなので...

(array(2)) '0' => array(username => 'foo',/* and so on */), 
      '1' => array(username => 'bar',/* and so on */) 
関連する問題