• php中json_encode与json_decode注意事项


    一、php 使用json_encode()转换值中大括号与花括号区别

    当array是一个从0开始的连续数组时,json_encode出来的结果是一个由[]括起来的字符串

    <?php 
    $arrField = array(
        'a',
        'a',
        'a',
        'a',
    );
    var_dump($arrField);
    echo json_encode($arrField);
    //输出内容
    array
      0 => string 'a' (length=1)
      1 => string 'a' (length=1)
      2 => string 'a' (length=1)
      3 => string 'a' (length=1)
    ["a","a","a","a"]

    当array是不从0开始或者不连续的数组时,json_encode出来的结果是一个由{}括起来的key-value模式的字符串

    <?php 
    $arrField = array(
        1=>'a',
        'a',
        'a',
        'a',
    );
    var_dump($arrField);
    echo json_encode($arrField);
    //输出内容
    array
      1 => string 'a' (length=1)
      2 => string 'a' (length=1)
      3 => string 'a' (length=1)
      4 => string 'a' (length=1)
    {"1":"a","2":"a","3":"a","4":"a"}

    当我们需要他强制返回由[]括起来的字符串该怎么做呢?

    非常简单,只要使用sort(),对数组排序,此函数为 array 中的元素赋与新的键名。这将删除原有的键名,而不是仅仅将键名重新排序。并将键值从高到低排序。

    <?php 
    $arrField = array(
        'a',
        'a',
        4 =>'a',
        'a',
    );
    //var_dump($arrField);
    echo json_encode($arrField);
    sort($arrField);
    echo "<br>转换为[]包围的字符串<br>";
    echo json_encode($arrField);
    
    //输出内容
    {"0":"a","1":"a","4":"a","5":"a"}
    转换为[]包围的字符串
    ["a","a","a","a"]

    二、关于json_decode() 函数

    json_decode(string $json [, bool $assoc ])

    $json:json格式字符串,

    $assoc:返回格式,当为真返回数组而非对象

    当字符串为[1,1,1] 这种模式时,json_decode默认解析出来的结果是一个数组,

    当字符串为{"1":1,"2":1} 这种模式时,json_decode默认解析出来的结果是一个对象,此时可以设置它的第二个参数为true强制让它返回数组

    由于php无法区分一维数组和二维数组,才会出现以上情况,因为使用json编码时推荐将第二个参数设置为true

  • 相关阅读:
    wifi与wimax
    短信中心号码
    (安卓)黑盒测试技巧个人整理
    数组实现栈的结构(java)
    tikv性能参数调优
    pt-table-checksum工具MySQL主从复制数据一致性
    MySQL索引原理以及类型
    TiDB数据库 mydumper与loader导入数据
    Innodb的体系结构
    MySQL核心之双一原则
  • 原文地址:https://www.cnblogs.com/mafeifan/p/3072572.html
Copyright © 2020-2023  润新知