2017-04-11 6 views
1

の文字列として数のインデックスを作成PHPのjson_encodeは、私はPHPで、次のコード例を持っている代わりに、オブジェクト

[{ 
    "test":[ 
    { 
     "val": "hello", 
     "me": "index < 1" 
    } 
    ], 
    "testing":[ 
    { 
     "val": "world", 
     "me": "index >= 1" 
    }, 
    { 
     "val": "hi", 
     "me": "index >= 1" 
    } 
    ] 
}] 

しかし、どのような起こってしまい、私は次で終わるということです。

[{ 
    "test":[ 
    { 
     "val": "hello", 
     "me": "index < 1" 
    } 
    ], 
    "testing":{ 
    "1":{ 
     "val": "world", 
     "me": "index >= 1" 
    }, 
    "2":{ 
     "val": "hi", 
     "me": "index >= 1" 
    } 
    } 
}] 

"1"とキーはintであるにもかかわらず、同じカウンタ変数を使用するとtestの正しいレンダリングが行われても表示されます。 testingがJSONオブジェクトの配列になるようにする方法はありますか?

答えて

2

配列はインデックス0で始まらず、インデックス1で始まるので、JSON配列ではなくJSONオブジェクトとしてエンコードされます。

あなたは、インデックスを削除し、値のみを保つためにarray_values()機能を使用することができます。

例:

$ret['testing'] = array_values($ret['testing']) 
echo json_encode($ret); 

しかし、あなたはこの瞬間にインデックスを必要としないので、あなたも、このようにコードをリファクタリングすることができます

foreach($data as $index => $value){ 
    if($index < 1){ 
    $ret['test'][] = array(
     'val' => $value, 
     'me' => 'index < 1' 
    ); 
    } 
    else { 
    $ret['testing'][] = array(
     'val' => $value, 
     'me' => 'index >= 1' 
    ); 
    } 
} 
echo json_encode($ret); 

この方法では、配列は常に起動しますインデックス0

+0

は、それはそれはそう長い1日でした。これはあなたがそれを指摘したので本当に明白です:(ありがとう! – Alex

関連する問題