首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

php json_encode()函数返回对象和数组问题

php json_encode() 函数格式化数据时会根据不同的数组类型格式化不同类型的json数据 索引数组时 php $arr = []; print_r(json_encode($arr)); //输出 [] 索引数组时生成的是数组类型数据,关联数组时生成的是对象类型的数据,空数组返回的是数组类型。...但是当碰到同一个字段返回的数组可能是关联数组也可能是空数组时,就会在app端出现数据类型不一致的问题,解决方式有两种: 一,使用 json_encode的 JSON_FORCE_OBJECT 模式 php $arr = []; print_r(json_encode($arr,JSON_FORCE_OBJECT)); //输出 {} 但是这种存在一个问题,它会把所有的数据都以对象的方式返回,包括索引数组...php $arr = new ArrayObject(); print_r(json_encode($arr)); //输出 {} 到这里我们可以随意的控制返回的json数据中数据的类型啦!!!!

3.7K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    PHP字符串的编码问题

    PHP 也自带几种字符串截取函数,其中常用到的就是 substr 和 mb_substr。 使用substr截取中文字符时会出现乱码,这是因为substr是按字节来截取的。...编码相关的php函数使用 ord(substr(str, i, 1)) > 0xa0) ord($string)返回字符串第一个字符的ASC码,通过这个来判断截取的字符串第一个字符是不是汉字,因为例如...out_charset , string 如GB2312 转UTF-8: iconv("GB2312","UTF-8",$text) url 编码urlencode 编码后返回的字符串中除了...2、urldecode() 和 rawurldecode() 解码出的字符串是 UTF-8格式的编码,如果URL中含有非UTF-8 编码的中文,则要把解码出的字符串进行转换。...如下,先把php文件设置为gb2312编码。你会看到一部分是乱码,一部分是正常的。

    2.5K20

    php递归函数返回值返回不出的问题

    今天上班用到了递归函数求分类最上级,代码如下 //分类递归查找上级分类 function get_cat_pid($cat_id,$data){     $sql = "select cat_id,cat_name...$data);         return $data;     } } 控制器代码如下 var_dump(get_cat_pid($cat_parent_id,array())); 发现无论如何,函数的打印结果是正确的...        return;     }else{         return;     } } get_cat_pid($cat_parent_id,$a);   var_dump($a); 解决了递归函数传值不出的问题...经过了大神的教诲,现在终于明白为什么会返回null了 函数的return是返回给调用这个函数的值,当循环两次值为0时,会返回给循环第一次的本身函数,然后再返回给调用函数的... 大神原话 ?...这样我懂了两个知识点: 1,函数不管是if还是else都得写个return; 2,加强基础啊!!!! 顺便把前面没有return的地方改下

    4.5K20

    关于PHP字符编码的函数区别

    在以前的学习当中,比方说有一次的写采集过程中转换字符的编码的时候老是失败,转换的结果总没有完全输出,后来经过网络查询得知是iconv有一个“-”漏洞,所以我们有必要掌握PHP的另一个字符编码函数mb_convert_encoding...mb_convert_encoding函数为php内部多字节字符串编码转换函数,可以在有需要的使用场合(如:解决在GB2312编码环境下使用Ajax产生的中文字乱码的问题)方便进行编码转换,以解决网页乱码的问题...函数原型: /** * 多字节字符串编码转换函数 * * @param string str 需要进行编码转换的字符串 * @param string to_encoding 指定转换为某种编码..."); ob_start('mb_output_handler'); 使用mb_convert_encoding 函数需启用PHP 的mbstring (multi-byte string)...另外mb_convert_encoding没有这个bug. 3、mb_convert_encoding()是PHP扩展函数,要开启扩展库才能用;而iconv是PHP内置函数,不需另外开启扩展库就可以使用

    87920

    关于PHP字符编码的函数区别

    在以前的学习当中,比方说有一次的写采集过程中转换字符的编码的时候老是失败,转换的结果总没有完全输出,后来经过网络查询得知是iconv有一个“-”漏洞,所以我们有必要掌握PHP的另一个字符编码函数mb_convert_encoding...mb_convert_encoding函数为php内部多字节字符串编码转换函数,可以在有需要的使用场合(如:解决在GB2312编码环境下使用Ajax产生的中文字乱码的问题)方便进行编码转换,以解决网页乱码的问题...函数原型: /** * 多字节字符串编码转换函数 * * @param string str 需要进行编码转换的字符串 * @param string to_encoding 指定转换为某种编码,如:gb2312..."); ob_start('mb_output_handler');  使用mb_convert_encoding 函数需启用PHP 的mbstring (multi-byte string...另外mb_convert_encoding没有这个bug. 3、mb_convert_encoding()是PHP扩展函数,要开启扩展库才能用;而iconv是PHP内置函数,不需另外开启扩展库就可以使用

    1.4K80

    PHP自定义递归函数实现数组转JSON功能【支持GBK编码】

    本文实例讲述了PHP自定义递归函数实现数组转JSON功能。...分享给大家供大家参考,具体如下: 问题: 由于最近的一个项目中要给别的公司提供接口,给他们喂 GBK 编码的 json 数据,但是有一个问题是 PHP 中的 json_encode 加密函数只支持 utf...我们的数据是 GBK 编码的,接收方要求的数据格式也是 GBK 编码的,一开始想的是先将数据转为 utf-8 编码再使用 json_encode 函数,结果是这导致我们的中文内容乱码了,所以,最后使用的是手动对数据加密的方式...实现: 想实现这个功能,最主要是观/ /察 json 数据的特点,一开始 LZ 得不到位导致不能完全实现 json_encode 函数的功能,后面参照网上的资料,实现了这个功能(就是一个递归函数): function...HTML/CSS/json代码格式化美化工具: 希望本文所述对大家PHP程序设计有所帮助。

    1.1K00

    你所不知道的php json编码解码

    json解析在php,或者说在任何编程语言中都非常常见。但是,你是否知道,json解析在php中是以扩展形式存在。 json处理,最常用的就是json_encode,json_decode。 ?...JSON_NUMERIC_CHECK将所有数字字符串编码成数字 JSON_UNESCAPED_UNICODE 以字面编码多字节 Unicode 字符(不使用\u形式编码) JSON_PRETTY_PRINT...虽然也可以强制所有数据都是字符串类型,但是解析过程占用内存就会增加。 7位的整数数字类型数据,如果使用整数的话,占用24bit,3个字节就够了。但是如果是字符串解析则需要7个字节。...php中json_encode默认对空数组编码后返回的是数组形式。在某些场景下就容易产生问题。例如用户的一些附加属性,只有用户设置了才存在。当用户没有设置的时候,应该是一个对象返回,而不是数组。...所以,如果你不设置第三个参数,让php对一个深度为512维的数组进行编码,得到的结果是false,错误提示为:" Maximum stack depth exceeded " 查看php源码中json扩展的内容

    2K30

    Ajax处理success回调函数返回的json数据。

    最好是直接返回字符串或者json。...开始做的时候想着,直接用PHP把数组处理好,返回给前端就好直接用了,所以对查询结果进行json编码,这个很简单,利用PHP内置json操作函数json_encode对array进行编码操作,然后return...原本想着直接使用返回的json数据去遍历填充页面了,万万没想到,折腾好大一会儿没成功。使用alert弹了下返回的data,完整的显示是一个json呐,为毛就遍历不到呢。...不过需要声明的是json原本就是字符串,只是是一种特殊格式的字符串而已。 既然是字符串的话,只能先把json字符串转换为JavaScript对象了。...在json章节中找到了这段: 这就简单了,现在只需将success返回的data丢到eval函数中就完事了,所以站长就匆匆写下这句var dataObj = eval("("+data+")");就操作后续重写

    3.5K20

    php的字符串常用函数

    统计有多少个子字符串, 比如 统计is, this is php里面,就会出现2个is 5. strpos 定义字符串出现的首次位置 (大小写不敏感, IS=is) 6. stripos 定义字符串出现的首次位置...26. strcmp 字符串比较 (大小写不敏感) 27. strncmp 比较字符串前面的n个字符 28. strncatcmp 按照自然数大小比较 例如:120 和30的比较 总结: php的字符串处理函数功能非常丰富...,远超过标准C提供的10多个字符串处理功能函数。...并且字符串没有长度限制,不限制编码,没有指针、越 界等异常情况。...十进制转换成八进制 hexdec 十六进制转换成十进制 octdec 八进制转换成十进制 日期和时间的函数 日期和时间 time()返回当前的Unix时间戳,以1970年以来,到现在的秒数。

    1.3K60

    Struts2中的JSON问题——后台返回JSON字符串到前台

    笔者目前仍是一名大二学生吗,后台框架完全是毫无任何基础,从零学,现学现用。   由此贴出在前后台用JSON字符串进行前后台交互中所出现的问题。...由于再开完全不明白完全不懂,所以在struts.xml的配置中没有单独将json-default和struts-default写入两个package中,而是直接写在了同一个package中,和同伴百度无数仍然没有人给出详细的办法...而新的问题又出现了。   到底是将整个对象都进行传递呢?还是先将对象在后台转换成字符串后再进行传递呢?...百度一下:我所看到的是所有都是将序列化好了的JSON字符串进行传递,都是JSONObject,可试了无数次都无法正确进行返回,返回常常是500状态码。   ...所以最为简单粗暴的办法就是:在将从数据库中得到数据放到对象过后,直接将对象传递,因为在json-default中会进行转换,后来发现先转成JSON字符再传递也是可以的(会贴出源代码浅析,主要参考:http

    1.8K60

    PHP给前端返回一个JSON对象的实例讲解

    解决问题:用php做后台时,如何给前端发起的AJAX请求返回一个JSON格式的"对象"; 说明:我本身是一个前端,工作久了之后发现要是不掌握一门后端开发语言的话,总感觉有点无力。...最近在边做自己的个人网站边学习php,在写验证码验证的时候,需要给前端发起的验证请求返回一个便于操作的数据,于是自然就想到了返回一个JSON格式的“对象”。...php / / session_start(); $code = trim($_POST['code']);//接收前端传来的数据 $raw_success = array('code' =>...验证成功的话返回的是{code:1,msg:"验证码正确"};失败则是{code:2,msg:"验证码错误"}; 因为本人不是专业的php开发,所以有大神看到了,有更好的办法,请指点一下,谢谢!.../ /以上这篇PHP给前端返回一个JSON对象的实例讲解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。

    1.1K40

    深入学习PHP中的JSON相关函数

    深入学习PHP中的JSON相关函数 在我们当年刚刚上班的那个年代,还全是 XML 的天下,但现在 JSON 数据格式已经是各种应用传输的事实标准了。...但其实从语义的角度来说,XML 的表现形式更强。 话不多说,在 PHP 中操作 JSON 其实非常简单,大家最常用的无非也就是 json_encode() 和 json_decode() 这两个函数。...下面代码我们只是给了一个 1 ,所以返回的内容就是 false 。也就是无法编码成功。默认情况下,这个参数的值是 512 。...我们可以直接使用一个 JSON_BIGINT_AS_STRING 常量参数,将这种数据在解码的时候直接转换成字符串,其实也就是保留了数据的原始样貌。...测试代码: https://github.com/zhangyue0503/dev-blog/blob/master/php/202012/source/11.深入学习PHP中的JSON相关函数.php

    74220

    Python 字符串中返回bool类型的函数集合

    字符串中返回bool类型的函数集合 isspace 功能: 判断字符串是否是由一个空格组成的字符串 用法: booltype = string.isspace() -> 无参数可传 ,返回一个布尔类型...注意: 由空格组成的字符串,不是空字符串 : “’!...=‘’’ istitile 功能: 判断字符串是否是一个标题类型 用法 booltype = String.istitle() -> 无参数可传, 返回一个布尔类型 注意: 该函数只能用于英文 isupper...与islower 功能: isupper判断字符串中的字母是否都是大写 islower判断字符串中的字母是否都是小写 用法: booltype = string.isupper() -> 无参数可传..., 返回一个布尔类型 booltype = string,islower() ->无参数可传 ,返回一个布尔类型 注意: 只检测字符串里的字母,对其他字符不做判断 join与split 稍后见 我们数据类型转换的时候见

    2.4K20

    从byte的不同,看字符串的编码问题

    从byte[]和char[]的不同,看字符串的编码问题 一、概述 众所周知: byte 是字节数据类型 ,是有符号型的,占1 个字节;大小范围为-128—127 。...可能看到上面这句话的时候,往往不会在意char是不是Unicode字符,当时它却是我们理清楚编码的关键。 二、编码类型 一说到编码,就会想到GBK和utf8,到底这些编码都是干什么的呢?...ASCII:严格来说,我们提到编码的时候,没必要说ASCII的,因为它不支持中文,它就不会被我们日常拿来用做字符串的编码。...UnsupportedEncodingException(csn); set(decoder, sd); } return sd.decode(ba, off, len); } 所以,字符串就是存储的字符...不同的编码下,一个字的字节数不同。

    47910
    领券