json对象索引从1开始

时间:2015-01-14 06:08:29

标签: javascript angularjs

我有一个PHP文件,我将array索引设置为1,如下面的代码片段所示。

在我的AngularJS应用程序中,我使用$http.post来获取JSON数据,奇怪的是我的JavaScript JSON对象从0开始,但我的PHP数组从1开始。

是因为当我进行JSON编码时,索引会丢失吗?

在下面的屏幕截图中,我的JSON对象索引从0开始,这是我的帖子的顺序。有没有办法在AngularJS中将JSON对象的索引设置为1?

原因是我使用日期过滤器将帖子ID与计算机日期(dayNumber变量)匹配,例如:今天是第14个,但我得到的帖子是第15个。我可以做dayNumber -1所以我可以调整日期数,但我想尝试学习新的东西。有人请吗?

PHP文件代码段:

$arr = array();

if($result->num_rows > 0) {
    while($row = $result->fetch_assoc()) {
        $arr[] = $row;  
    }
}

//sort obj to start from ASC
sort($arr);

$iOne = array_combine(range(1, count($arr)), array_values($arr));

# JSON-encode the response

$iOne = array_values($iOne);

$json_response1 = json_encode($iOne);

//$json_response = json_encode($arr);

// # Return the response
echo $json_response1;

**AngularJS code snippet:**

app.controller('TimeController', function($scope, $filter, $http) {
  $http.post('ajax/getQuotes.php').success(function(data){

      console.log(data);

     $scope.quote = data;
  });
  $scope.dayNumber = $filter('date')(new Date(), 'd');
console.log( $scope.dayNumber);

输出(在控制台中):

enter image description here

2 个答案:

答案 0 :(得分:0)

从索引1开始一个数组不是一个好习惯。那课程记忆浪费。我建议改变你的

dayNumber 

dayNumber -1

否则你的代码会变得复杂。

答案 1 :(得分:0)

$iOne = array_values($iOne);

是"重置"指数。

尝试不使用此行或是否有理由需要此功能?

修改

如果你需要数字索引,最简单的方法是在位置0(在php中)添加一个虚拟值。有了这个,你可以跳过$ iOne的东西:

array_unshift($arr, null);
$json_response1 = json_encode($arr);