$.post()接收后台的数组有时是数组有时是对象
下列为返回数组给前台$.post();
//根据电话号码查询此人历史订单
public function history()
{
$post = input('post.');
$re = Db('dingdan')->where('tel', $post['tel'])->select();
foreach ($re as $key => $value) {
if ($value['id'] == $post['id']) {
unset($re[$key]);
}
}
return $re;
}
返回结果如下:有两个总是返回对象,不知道什么原因。 经查资料发现,是unset()的原因,使用unset()不会改变原有数组的索引。当unset()的元素不是索引数组的最后一个元素时,处理后的数组就会变成关联数组,如下:
<?php
$array = array(0 => "a", 1 => "b", 2 => "c");
unset($array[1]);
//↑ 你想删除的key
?>
输出:
Array (
[0] => a
[2] => c
)
由于javascript不支持关联数组,所以将后台传递过来的索引数组(indexed array)转为数组格式,而将关联数组(associative array)转为对象格式。
array_values() 函数返回一个包含给定数组中所有键值的索引数组,不保留键名。
所以,上述遇到的问题,在foreach后面加上array_values($re),就可以了。