我有一个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);
输出(在控制台中):
答案 0 :(得分:0)
从索引1开始一个数组不是一个好习惯。那课程记忆浪费。我建议改变你的
dayNumber
到
dayNumber -1
否则你的代码会变得复杂。
答案 1 :(得分:0)
$iOne = array_values($iOne);
是"重置"指数。
尝试不使用此行或是否有理由需要此功能?
修改强>
如果你需要数字索引,最简单的方法是在位置0(在php中)添加一个虚拟值。有了这个,你可以跳过$ iOne的东西:
array_unshift($arr, null);
$json_response1 = json_encode($arr);