• 白云区新办证大厅户籍办理服务平台正式投入使用啦 2019-07-13
  • 关于人类所有的知识问题,其实都是社会问题。就“社会”两个字。 2019-07-13
  • 百姓故事:蒋姐姐的旗袍人生 2019-07-10
  • 这艘军舰有美国导弹护体 仍被中国反舰导弹轻松击沉 2019-07-09
  • 把你当猪就有可能。不想得病而羸弱就得身强体壮。首先,想依靠消灭病毒而不得病,那只是痴心妄想。其次,想得天下,从来没有靠肉体的征服而成功过的先例。 2019-07-09
  • 《国家哲学社会科学“十一五”研究状况与“十二五”发展趋势》一书出版 2019-07-06
  • 夏天吃雪糕怕伤胃拉肚子 如何健康吃冷饮——食品安全频道——黄河新闻网 2019-07-06
  • 2018年成都卫星城市仍将大放异彩?下一站:资阳北 ——凤凰网房产成都 2019-07-05
  • 皇家地暖长啥样?《故宫新事》带你探寻养心殿的秘密 2019-07-05
  • 南昌古风物略记文章中国国家地理网 2019-07-01
  • 推进新时代中国特色社会主义云南新实践——访云南省委书记陈豪 2019-06-28
  • 十二届全国人大常委会第七次会议 2019-06-28
  • 原中行一支行员工被判刑 利用职务便利骗取巨额贷款并诈骗 2019-06-24
  • 孕期压力大影响胎儿大脑发育 2019-06-14
  • 俄罗斯足球队50横扫沙特队真是让人大饱眼福,特提精神!俄罗斯是战斗民族名不虚传。 2019-06-10
  • 30选5怎么中奖:关于php unset对json_encode的影响详解

    文章TAG:PHP unset json_encode
    时间:2018-11-14来源/作者:冒雨ing 编辑:源码库 文章热度:

    双色球基本走势图表图 www.jpkp.net 前言

    PHP 中有个释放变量的语句叫做unset(从PHP4开始unset已经不再是一个函数了,而是一个语句),本文主要给大家介绍了关于php unset对json_encode影响的相关内容,下面话不多说了,来一起看看详细的介绍吧

    先运行一段php代码:

    $a = Array(0=>'hello world', 1=>'girl', 2=>'boy');
    
    var_dump(json_encode($a));
    
    unset($a[1]);
    
    var_dump(json_encode($a));

    返回结果如下:

    string(28) "["hello world","girl","boy"]"
    string(29) "{"0":"hello world","2":"boy"}"

    发现对一个数组unset前后,变量的类型变化了,unset前是数组,unset后是对象

    这是为什么呢?

    看下unset和json_encode究竟是做了什么:

    unset() 销毁指定的变量??梢陨境榈闹付ㄔ?,删除后索引不重排。

     json_encode() 用于对变量进行 JSON 编码,该函数如果执行成功返回 JSON 数据,否则返回 FALSE

    而json_encode转换的对象如果是数组,那么就需要注意下了,看下面的示例:

    举例:

    $a = Array(0=>'hello world', 1=>'girl', 2=>'boy');
    var_dump(json_encode($a));
    
    $b = Array('name'=>'hello world', 'age'=>'18', 'gender'=>'man');
    var_dump(json_encode($b));

    运算结果:

    string(28) "["hello world","girl","boy"]"
    string(48) "{"name":"hello world","age":"18","gender":"man"}"

    发现上面的结果一个是数组,一个是对象。

    这是因为$a是索引数组(连续数组),$b则是关联数组(非连续数组)

    再看一个官方的例子:

    php,unset,json_encode

    以上输出的结果是:

    php,unset,json_encode

    注意:上面的第二个数组之所以转化后变成对象,是因为键值不是从0开始,这也是非连续数组

    所以对一个连续数组执行unset后,会变成非连续数组,对非连续数组执行json_encode会变成对象。

    总结:

    php中:

    索引数组:是指以数字为键的数组。并且这个键值 是自增的

    关联数组:指的是一个键值对应一个值,并且这个键值是不规律的,通常都是我们自己指定的。

    索引数组转为json后是数组。而关联数组转为json后是对象

    拓展一:

    那如果想对连续数组执行json_encode后变成对象可以这样做:

    $arr = array(
     '0'=>'a','1'=>'b','2'=>'c','3'=>'d'
    );
    echo json_encode((object)$arr);

    输出结果为:

    {"0":"a","1":"b","2":"c","3":"d"}

    拓展二:

    如何消除unset对json_encode的影响?达到转换结果依然为数组

    使用unset时:

    foreach ($array as $k => $v) {
     if (某条件) {
      unset($array[$k]);
     }
    }

    优化后:

    $tmp = array();
    foreach ($array as $k => $v) {
     if (某条件)) {
      continue;
     }
     $tmp[] = $v;
    }
    $array = $tmp;

    对优化后的$array进行json_encode就可以完美的转换为数组而不是对象了

    总结

    以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对ASPKU源码库的支持。


    注:相关教程知识阅读请移步到PHP教程频道。
    相关PHP教程
    热门标签

    PHP教程Rss订阅PHP教程搜索

  • 白云区新办证大厅户籍办理服务平台正式投入使用啦 2019-07-13
  • 关于人类所有的知识问题,其实都是社会问题。就“社会”两个字。 2019-07-13
  • 百姓故事:蒋姐姐的旗袍人生 2019-07-10
  • 这艘军舰有美国导弹护体 仍被中国反舰导弹轻松击沉 2019-07-09
  • 把你当猪就有可能。不想得病而羸弱就得身强体壮。首先,想依靠消灭病毒而不得病,那只是痴心妄想。其次,想得天下,从来没有靠肉体的征服而成功过的先例。 2019-07-09
  • 《国家哲学社会科学“十一五”研究状况与“十二五”发展趋势》一书出版 2019-07-06
  • 夏天吃雪糕怕伤胃拉肚子 如何健康吃冷饮——食品安全频道——黄河新闻网 2019-07-06
  • 2018年成都卫星城市仍将大放异彩?下一站:资阳北 ——凤凰网房产成都 2019-07-05
  • 皇家地暖长啥样?《故宫新事》带你探寻养心殿的秘密 2019-07-05
  • 南昌古风物略记文章中国国家地理网 2019-07-01
  • 推进新时代中国特色社会主义云南新实践——访云南省委书记陈豪 2019-06-28
  • 十二届全国人大常委会第七次会议 2019-06-28
  • 原中行一支行员工被判刑 利用职务便利骗取巨额贷款并诈骗 2019-06-24
  • 孕期压力大影响胎儿大脑发育 2019-06-14
  • 俄罗斯足球队50横扫沙特队真是让人大饱眼福,特提精神!俄罗斯是战斗民族名不虚传。 2019-06-10
  • 重庆时时彩后二妈 中福利彩票走势图 伯乐彩票网站 极速快3有什么技巧 保皇扑克 2019二肖中特顶尖号码 pk10技巧玩法 时时彩投注皇恩平台 扑克牌花色游戏 快乐12任五技巧 让分胜负 爱彩乐怎么购买 双色球开奖时间 ag真人娱乐 河北快三手机版走势图