php打印数组类型与前端交互的小bug

图片发自简书App

  在开发工作中php后台打印的json数据会经常出现我们意料之外的事,为了前端ajax能获取可靠地数据通常我们会对json数据进行一些处理,包括转换为数组、对象、可接受中文处理、数据转码等等。今天只谈一个我最近遇到地一个关于打印数组的问题。

我们在后端获取到一个数组数据$arr之后,通常我们会直接json_encode($arr)之后早echo或者exit截止输出。但是这样有时候会出现一些诡异地画风。


$result = $db -> getAll("SELECT id,name,state FROME table1");

$ara = array();

foreach($result as $key => $value){

    if(!$value['state']) continue;

    $ara['id'] = $value['id];

    $ara['name'] = $value['name];

    $ara['state'] = $value['state];

}

header('Content-Type: application/json');

exit(json_encode($ara));


这个时候理应返回一个json数组。但其实这样时可能会出错地,$ara是一个索引数组,经过测试当数组没有第0个元素地时候返回地数组佳将会以对象地形式返回。这时候前端是获取不到数据date地length等属性,因为返回地是对象而不是数组。

解决方法


$result = $db -> getAll("SELECT id,name,state FROME table1");

$ara = array();

foreach($result as $key => $value){

    if(!$value['state']) continue;

    $ara['id'] = $value['id];

    $ara['name'] = $value['name];

    $ara['state'] = $value['state];

}

header('Content-Type: application/json');

$ara = array_values($ara);

exit(json_encode($ara,true));


我们用array_values()函数重新排序了原数组,当然如果该数组地索引数据是有意义地就需要寻找其它地方法。

希望能对各位coder有帮助!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • pyspark.sql模块 模块上下文 Spark SQL和DataFrames的重要类: pyspark.sql...
    mpro阅读 9,996评论 0 13
  • 关于Mongodb的全面总结 MongoDB的内部构造《MongoDB The Definitive Guide》...
    中v中阅读 32,410评论 2 89
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 137,100评论 19 139
  • // +-----------------------------------------------------...
    Robinbing阅读 1,526评论 0 0
  • 01 三月的天空,白云飘浮,飞鸟划下的地方,立着座座青山。 柳絮在墙角飞舞,旋风般,腾起、下落,时而追逐,时而停滞...
    你是随机者阅读 219评论 0 0

友情链接更多精彩内容