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
<?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 回答
1

使用 unset(),你的数组变成了一个关联数组,因此被编码为 JSON 中的一个对象。

我的两分钱:在循环之后使用 array_filter() 而不是 unset()。

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

于 2013-10-09T07:26:47.073 回答