1

Web サービスでいくつかの json オブジェクトを再エンコードしています。ローカルでテストしましたが、すべて問題なく動作しています。

ローカルでエンコードされた結果

しかし、ライブサーバーにアップロードすると、配列がインデックス付きのすべてのオブジェクトを含む単一のオブジェクトに変更されました。

解析エラーを生成するエンコードされた結果のライブサーバー、

ここに私のコードがあります

foreach ( $events as $eventkey => $event ) {
    if ( $event->recurring_type == "DAILY" ) {
        $date = new DateTime( $event->recurring_start_date );
        $new_event = $event;
        if ( $event->recurring_start_date < $event->recurring_end_date ) {
        while ( $new_event->recurring_start_date < $new_event->recurring_end_date ) {
           $new_event->event_date = $new_event->recurring_start_date;
               $events[] = (array) $new_event;
           $new_event->recurring_start_date = $date->modify('+1 day')->format('Y-m-d H:i:s');
            }
         } else {
        unset( $events[$eventkey] ); // used to avoid duplicate result with same data event_date,
         }
     }

この行を削除すると

unset( $events[$eventkey] );

その後、結果はオンラインでも問題なく表示されます。しかし、私はこれが必要です!私は正確な問題を理解することはできません!
助けてください

4

2 に答える 2

1

unset() を使用すると、配列は連想配列になるため、JSON でオブジェクトとしてエンコードされます。

私の2セント:unset()の代わりに、ループ後にarray_filter()を使用してください。

http://php.net/manual/fr/function.array-filter.php

于 2013-10-09T07:26:47.073 に答える
1
<?php

$arr = array('a' , 'b' , 'c' , 'd' , 'e' );
unset($arr[0]);
echo json_encode($arr);//here o/p as object {"1":"b","2":"c","3":"d","4":"e"}
$arr= array_values($arr);
echo json_encode($arr);//["b","c","d","e"]

コードパッド

于 2013-10-09T07:57:49.417 に答える