0

私はこの通常の配列名 $arr.. を持っており、array_push() 関数を使用して配列に何かをプッシュしようとしています.. 次のようなarray_push( $arr['alerts_data'], 999 ); 出力が生成されます。

Array
(
    [alerts_data] => Array
        (
            [0] => 169
            [1] => 175
            [2] => 111
            [3] => 48
            [4] => 999
        )

)

json_encode を使用すると、次のようになりました。

{"alerts_data":[169,175,111,48,111,999]}

しかし、 $arr から何かを unset() しようとすると、次のようになります。

unset( $arr['alerts_data'][4] );// will remove removes the 999

json_encode を再度使用すると、この json オブジェクトが得られます

{"alerts_data":{"0":169,"1":175,"2":111,"3":48}}

ここで何が問題なのですか?教えてくれますか?unset() 関数を使用して、上記の最初のエンコードされた json を実現したいと考えています。

4

2 に答える 2

5

はい、これは配列キーが連続していないためです。連想配列として扱われ、PHP 連想配列は JavaScript オブジェクトになります。JavaScript には連想配列がないためです。

array_splice()配列から要素をきれいに削除するために使用します。

于 2012-11-21T17:16:57.733 に答える
2

キーにギャップがある (3 から 5 になる) ため、オブジェクトを有効にするにはオブジェクトを作成する必要があります。考えられる解決策は次の 2 つです。

array_splice($arr['alerts_data'], 4, 1);

unset($arr['alerts_data'][4]);
$arr['alerts_data'] = array_values($arr['alerts_data']);
于 2012-11-21T17:21:48.133 に答える