如果您对摆脱PHP中json_encode中的int索引以获取多维数组感兴趣,那么本文将是一篇不错的选择,我们将为您详在本文中,您将会了解到关于摆脱PHP中json_encode中的int索引以获取多
如果您对摆脱PHP中json_encode中的int索引以获取多维数组感兴趣,那么本文将是一篇不错的选择,我们将为您详在本文中,您将会了解到关于摆脱PHP中json_encode中的int索引以获取多维数组的详细内容,我们还将为您解答php解析json多维数组的相关问题,并且为您提供关于json_encode php中json_encode中文编码问题分析、php – json_encode()在多维数组上 – 使用字符串键、php中json_decode()和json_encode()用法与中文不显示解决办法、php中json_decode()和json_encode()用法与中文不显示解决办法_PHP教程的有价值信息。
本文目录一览:- 摆脱PHP中json_encode中的int索引以获取多维数组(php解析json多维数组)
- json_encode php中json_encode中文编码问题分析
- php – json_encode()在多维数组上 – 使用字符串键
- php中json_decode()和json_encode()用法与中文不显示解决办法
- php中json_decode()和json_encode()用法与中文不显示解决办法_PHP教程
摆脱PHP中json_encode中的int索引以获取多维数组(php解析json多维数组)
这是一个很难解释的问题,所以请告诉您.如果您在下面看,您将看到有效的JSON.
{
"data":{
"0":{
"action_id":"1",
"date":"2012-04-10 15:07:38",
"action_type":"1",
"action_text":"Some one got blamed!"
},
"1":{
"action_id":"2",
"date":"2012-04-10 16:18:05",
"action_type":"1",
"action_text":"Testing multiple items for AJAX"
},
"total":2,
"ajax_message":"Success",
"ajax_status":"0",
"success":"true"
}
}
但是对于正在使用的应用程序,它无法处理“ 0”:,“ 1”,而是只希望将其逗号分隔.
我当前生成的代码是:
while ($r = MysqL_fetch_assoc($q)) {
$array[] = $r;
}
json_encode($array);
目前还相当简单和原始.但是我想我可能不得不为自己写一个json_encode,以便它像这样打印它…..
任何帮助将不胜感激
注意:这是一个有效的表格(手写):
{
"data": [
{
"action_id": "1",
"date": "2012-04-10 15:07:38",
"action_type": "1",
"action_text": "Some one got blamed!",
"fb_id": "760775384"
},
{
"action_id": "2",
"date": "2012-04-10 16:18:05",
"action_type": "1",
"action_text": "Testing multiple items for AJAX",
"fb_id": "760775384"
}
],
"total": 2,
"ajax_message": "Success",
"ajax_status": "0",
"success": "true"
}
解决方法:
问题在于您的数字键(0、1)在哈希中与命名键(总计,ajax_message等)处于同一级别.而不是这样做:
$a = array();
while ($r = MysqL_fetch_assoc($q)){
$a[] = $r;
}
$a[''key''] = value;
做这个:
$a = array();
$a[''rows''] = array();
while ($r = MysqL_fetch_assoc($q)){
$a[''rows''][] = $r;
}
$a[''key''] = value;
如果数组中的每个键(在此示例中为$a [‘rows’])都是数字键,则json_encode()会将其输出为[{list},{like},{this}]
总结
以上是小编为你收集整理的摆脱PHP中json_encode中的int索引以获取多维数组全部内容。
如果觉得小编网站内容还不错,欢迎将小编网站推荐给好友。
原文地址:https://codeday.me/bug/20191101/1983700.html
json_encode php中json_encode中文编码问题分析
例如:''胥''经过json_encode处理后变为''\u80e5'',最终的json中中文部分被替换为unicode编码。我们要解决的就是将对象转换为json并保证对象内部的中文在json中仍然是以正常的中文出现,现在看来只使用json_encode是不能达到目的的。
我的解决方法:先将类中的中文字段进行url编码(urlencode),然后再对对象进行json编码(jsonencode),最后url解码(urldecode)json,即最终的json,里面的中文依旧是那个中文!
测试代码如下:
复制代码 代码如下:
class myClass {
public $item1 = 1;
public $item2 = ''中文'';
function to_json() {
//url编码,避免json_encode将中文转为unicode
$this->item2 = urlencode($this->item2);
$str_json = json_encode($this);
//url解码,转完json后将各属性返回,确保对象属性不变
$this->item2 = urldecode($this->item2);
return urldecode($str_json);
}
}
$c = new myClass();
echo json_encode($c);
echo ''
'';
echo $c->to_json();
echo ''
'';
echo json_encode($c);
echo ''
'';
echo json_encode(''胥'');
?>
程序输出结果:
复制代码 代码如下:
{"item1":1,"item2":"\u4e2d\u6587"}
{"item1":1,"item2":"中文"}
{"item1":1,"item2":"\u4e2d\u6587"}
"\u80e5"
希望本文起到抛砖引玉的作用,收集大家更好的解决方法……!
以上就介绍了json_encode php中json_encode中文编码问题分析,包括了json_encode方面的内容,希望对PHP教程有兴趣的朋友有所帮助。
php – json_encode()在多维数组上 – 使用字符串键
关键是我命名每个对象的ID – 这有助于我将每个对象放在正确的父对象之下. (在下面的代码中,我使用101,102等)
但是,我遇到的问题是当我使用json_encode在JSON中返回数组时.每个’Children’数组都被打印为一个对象,而不是一个数组 – 如下面的JSON代码所示.
当我读到另一个SO线程here时,它们“由于包含字符串键而被制作为对象” – 尽管它们是数字,但它们仍然是字符串.
{ "101": { "ID": "101","ParentID": "0","Name": "Root One" "Children": { "102": { "ID": "102","ParentID": "101","Name": "Child One" },"103": { "ID": "103","Name": "Child Two","Children": { "104": { "ID": "104","ParentID": "103","Name": "Child Child One" } } },
有谁知道如何克服这个问题?
编辑:JSON应该如下所示(方括号很重要!):
[ { "ID": "101","Name": "Root One","Children": [ { "ID": "102","Name": "Child One","Children": [
解决方法
["foo","bar","baz"]
此数组没有命名索引,也没有任何添加任何规定.
PHP将列表和键值存储混合为一种数组数据类型. JSON没有.
php中json_decode()和json_encode()用法与中文不显示解决办法
本文章介绍了关于php中json_decode()和json_encode()用法与中文不显示解决办法,有需要的朋友可以参考一下下。
php中json_decode()和json_encode()
1.json_decode()
json_decode
(PHP 5 >= 5.2.0, PECL json >= 1.2.0)
json_decode — 对 JSON 格式的字符串进行编码
说明
mixed json_decode ( string $json [, bool $assoc ] )
接受一个 JSON 格式的字符串并且把它转换为 PHP 变量
参数
json
待解码的 json string 格式的字符串。
assoc
当该参数为 TRUE 时,将返回 array 而非 object 。
返回值
Returns an object or if the optional assoc parameter is TRUE, an associative array is instead returned.
范例
立即学习“PHP免费学习笔记(深入)”;
Example #1 json_decode() 的例子
代码如下 | 复制代码 |
$json = ''{"a":1,"b":2,"c":3,"d":4,"e":5}''; 上例将输出: object(stdClass)#1 (5) { array(5) {
结果为: Array ( [0] => stdClass Object ( [Name] => a1 [Number] => 123 [Contno] => 000 [QQNo] => ) [1] => stdClass Object ( [Name] => a1 [Number] => 123 [Contno] => 000 [QQNo] => ) [2] => stdClass Object ( [Name] => a1 [Number] => 123 [Contno] => 000 [QQNo] => ) ) |
可以看出经过json_decode()编译出来的是对象,现在输出json_decode($data,true)试下
代码如下 | 复制代码 |
echo json_decode($data,true); 结果: Array ( [0] => Array ( [Name] => a1 [Number] => 123 [Contno] => 000 [QQNo] => ) [1] => Array ( [Name] => a1 [Number] => 123 [Contno] => 000 [QQNo] => ) [2] => Array ( [Name] => a1 [Number] => 123 [Contno] => 000 [QQNo] => ) ) |
可以看出 json_decode($data,true)输出的一个关联数组,由此可知json_decode($data)输出的是对象,而json_decode("$arr",true)是把它强制生成PHP关联数组.
2.json_encode()
json_encode
(PHP 5 >= 5.2.0, PECL json >= 1.2.0)
json_encode — 对变量进行 JSON 编码
Report a bug 说明
string json_encode ( mixed $value [, int $options = 0 ] )
返回 value 值的 JSON 形式
Report a bug 参数
value
待编码的 value ,除了resource 类型之外,可以为任何数据类型
该函数只能接受 UTF-8 编码的数据
options
由以下常量组成的二进制掩码: JSON_HEX_QUOT, JSON_HEX_TAG, JSON_HEX_AMP, JSON_HEX_APOS, JSON_NUMERIC_CHECK, JSON_PRETTY_PRINT, JSON_UNESCAPED_SLASHES, JSON_FORCE_OBJECT, JSON_UNESCAPED_UNICODE.
Report a bug 返回值
编码成功则返回一个以 JSON 形式表示的 string 或者在失败时返回 FALSE 。
Report a bug 更新日志
版本 说明
5.4.0 options 参数增加常量: JSON_PRETTY_PRINT, JSON_UNESCAPED_SLASHES, 和 JSON_UNESCAPED_UNICODE。
5.3.3 options 参数增加常量:JSON_NUMERIC_CHECK。
5.3.0 增加 options 参数.
Report a bug 范例
Example #1 A json_encode() 的例子
代码如下 | 复制代码 |
$arr = array (''a''=>1,''b''=>2,''c''=>3,''d''=>4,''e''=>5); echo json_encode($arr); 以上例程会输出: {"a":1,"b":2,"c":3,"d":4,"e":5} Example #2 json_encode() 函数中 options 参数的用法
$a = array('' echo "Normal: ", json_encode($a), "n"; $b = array(); echo "Empty array output as array: ", json_encode($b), "n"; $c = array(array(1,2,3)); echo "Non-associative array output as array: ", json_encode($c), "n"; $d = array(''foo'' => ''bar'', ''baz'' => ''long''); echo "Associative array always output as object: ", json_encode($d), "n"; 以上例程会输出: Normal: [" Empty array output as array: [] Non-associative array output as array: [[1,2,3]] Associative array always output as object: {"foo":"bar","baz":"long"} |
Example #3 连续与非连续数组示例
代码如下 | 复制代码 |
echo "连续数组".PHP_EOL; echo PHP_EOL."非连续数组".PHP_EOL; echo PHP_EOL."删除一个连续数组值的方式产生的非连续数组".PHP_EOL; |
以上例程会输出:
代码如下 | 复制代码 |
连续数组 非连续数组 删除一个连续数组值的方式产生的非连续数组
结果为: {"Name":"a1", |
可以看出json_encode()和json_decode()是编译和反编译过程,注意json只接受utf-8编码的字符,所以json_encode()的参数必须是utf-8编码,否则会得到空字符或者null
如果是中文的话就要注意了
在网上找到一种解决方法:
代码如下 | 复制代码 |
/* 处理json_encode中文乱码 */ |
后来请教了别人,还可以用base64编码,不过base64编码不可以放在URL中,百度是这样解释的:
标准的Base64并不适合直接放在URL里传输,因为URL编码器会把标准Base64中的“/”和“+”字符变为形如“%XX”的形式,而这些“%”号在存入数据库时还需要再进行转换,因为ANSI SQL中已将“%”号用作通配符。
不过我的数据是要通过POST发送的,并不在HTTP 的head中,而在message-body里,所以不受影响。
json_encode 只能接受utf-8格式的数据
例如:''胥''经过json_encode处理后变为''u80e5'',最终的json中中文部分被替换为unicode编码。我们要解决的就是将对象转换为json并保证对象内部的中文在json中仍然是以正常的中文出现,现在看来只使用json_encode是不能达到目的的。
我的解决方法:先将类中的中文字段进行url编码(urlencode),然后再对对象进行json编码(jsonencode),最后url解码(urldecode)json,即最终的json,里面的中文依旧是那个中文!
测试代码如下:
代码如下 | 复制代码 |
class myClass { 程序输出结果: {"item1":1,"item2":"u4e2du6587"}
|
php中json_decode()和json_encode()用法与中文不显示解决办法_PHP教程
本文章介绍了关于php中json_decode()和json_encode()用法与中文不显示解决办法,有需要的朋友可以参考一下下。
php中json_decode()和json_encode()
1.json_decode()
json_decode
(PHP 5 >= 5.2.0, PECL json >= 1.2.0)
json_decode — 对 JSON 格式的字符串进行编码
说明
mixed json_decode ( string $json [, bool $assoc ] )
接受一个 JSON 格式的字符串并且把它转换为 PHP 变量
参数
json
待解码的 json string 格式的字符串。
assoc
当该参数为 TRUE 时,将返回 array 而非 object 。
返回值
Returns an object or if the optional assoc parameter is TRUE, an associative array is instead returned.
范例
立即学习“PHP免费学习笔记(深入)”;
Example #1 json_decode() 的例子
代码如下 | 复制代码 |
$json = ''{"a":1,"b":2,"c":3,"d":4,"e":5}''; 上例将输出: object(stdClass)#1 (5) { array(5) {
结果为: Array ( [0] => stdClass Object ( [Name] => a1 [Number] => 123 [Contno] => 000 [QQNo] => ) [1] => stdClass Object ( [Name] => a1 [Number] => 123 [Contno] => 000 [QQNo] => ) [2] => stdClass Object ( [Name] => a1 [Number] => 123 [Contno] => 000 [QQNo] => ) ) |
可以看出经过json_decode()编译出来的是对象,现在输出json_decode($data,true)试下
代码如下 | 复制代码 |
echo json_decode($data,true); 结果: Array ( [0] => Array ( [Name] => a1 [Number] => 123 [Contno] => 000 [QQNo] => ) [1] => Array ( [Name] => a1 [Number] => 123 [Contno] => 000 [QQNo] => ) [2] => Array ( [Name] => a1 [Number] => 123 [Contno] => 000 [QQNo] => ) ) |
可以看出 json_decode($data,true)输出的一个关联数组,由此可知json_decode($data)输出的是对象,而json_decode("$arr",true)是把它强制生成PHP关联数组.
2.json_encode()
json_encode
(PHP 5 >= 5.2.0, PECL json >= 1.2.0)
json_encode — 对变量进行 JSON 编码
Report a bug 说明
string json_encode ( mixed $value [, int $options = 0 ] )
返回 value 值的 JSON 形式
Report a bug 参数
value
待编码的 value ,除了resource 类型之外,可以为任何数据类型
该函数只能接受 UTF-8 编码的数据
options
由以下常量组成的二进制掩码: JSON_HEX_QUOT, JSON_HEX_TAG, JSON_HEX_AMP, JSON_HEX_APOS, JSON_NUMERIC_CHECK, JSON_PRETTY_PRINT, JSON_UNESCAPED_SLASHES, JSON_FORCE_OBJECT, JSON_UNESCAPED_UNICODE.
Report a bug 返回值
编码成功则返回一个以 JSON 形式表示的 string 或者在失败时返回 FALSE 。
Report a bug 更新日志
版本 说明
5.4.0 options 参数增加常量: JSON_PRETTY_PRINT, JSON_UNESCAPED_SLASHES, 和 JSON_UNESCAPED_UNICODE。
5.3.3 options 参数增加常量:JSON_NUMERIC_CHECK。
5.3.0 增加 options 参数.
Report a bug 范例
Example #1 A json_encode() 的例子
代码如下 | 复制代码 |
$arr = array (''a''=>1,''b''=>2,''c''=>3,''d''=>4,''e''=>5); echo json_encode($arr); 以上例程会输出: {"a":1,"b":2,"c":3,"d":4,"e":5} Example #2 json_encode() 函数中 options 参数的用法
$a = array('' echo "Normal: ", json_encode($a), "n"; $b = array(); echo "Empty array output as array: ", json_encode($b), "n"; $c = array(array(1,2,3)); echo "Non-associative array output as array: ", json_encode($c), "n"; $d = array(''foo'' => ''bar'', ''baz'' => ''long''); echo "Associative array always output as object: ", json_encode($d), "n"; 以上例程会输出: Normal: [" Empty array output as array: [] Non-associative array output as array: [[1,2,3]] Associative array always output as object: {"foo":"bar","baz":"long"} |
Example #3 连续与非连续数组示例
代码如下 | 复制代码 |
echo "连续数组".PHP_EOL; echo PHP_EOL."非连续数组".PHP_EOL; echo PHP_EOL."删除一个连续数组值的方式产生的非连续数组".PHP_EOL; |
以上例程会输出:
代码如下 | 复制代码 |
连续数组 非连续数组 删除一个连续数组值的方式产生的非连续数组
结果为: {"Name":"a1", |
可以看出json_encode()和json_decode()是编译和反编译过程,注意json只接受utf-8编码的字符,所以json_encode()的参数必须是utf-8编码,否则会得到空字符或者null
如果是中文的话就要注意了
在网上找到一种解决方法:
代码如下 | 复制代码 |
/* 处理json_encode中文乱码 */ |
后来请教了别人,还可以用base64编码,不过base64编码不可以放在URL中,百度是这样解释的:
标准的Base64并不适合直接放在URL里传输,因为URL编码器会把标准Base64中的“/”和“+”字符变为形如“%XX”的形式,而这些“%”号在存入数据库时还需要再进行转换,因为ANSI SQL中已将“%”号用作通配符。
不过我的数据是要通过POST发送的,并不在HTTP 的head中,而在message-body里,所以不受影响。
json_encode 只能接受utf-8格式的数据
例如:''胥''经过json_encode处理后变为''u80e5'',最终的json中中文部分被替换为unicode编码。我们要解决的就是将对象转换为json并保证对象内部的中文在json中仍然是以正常的中文出现,现在看来只使用json_encode是不能达到目的的。
我的解决方法:先将类中的中文字段进行url编码(urlencode),然后再对对象进行json编码(jsonencode),最后url解码(urldecode)json,即最终的json,里面的中文依旧是那个中文!
测试代码如下:
代码如下 | 复制代码 |
class myClass { 程序输出结果: {"item1":1,"item2":"u4e2du6587"}
|
今天关于摆脱PHP中json_encode中的int索引以获取多维数组和php解析json多维数组的分享就到这里,希望大家有所收获,若想了解更多关于json_encode php中json_encode中文编码问题分析、php – json_encode()在多维数组上 – 使用字符串键、php中json_decode()和json_encode()用法与中文不显示解决办法、php中json_decode()和json_encode()用法与中文不显示解决办法_PHP教程等相关知识,可以在本站进行查询。
本文标签: