本文目錄一覽:
- 1、PHP怎麼把多個數組揉成一個json字符串?
- 2、php 將json格式數據轉換成數組的方法
- 3、PHP改變json格式(先把json轉換成數組,處理成另一種樣式)
- 4、php轉換成json數據格式
- 5、php怎麼將數組數組轉化為json格式的數據
- 6、php如何輸出中文json格式字符串
PHP怎麼把多個數組揉成一個json字符串?
?php
//創建數組
$array = array(
“name” = “Hza”,
“age” = 21
);
//數組轉化為json格式
echo json_encode($array);
echo “br /”;
//創建類
class Student {
public $name;
public $age;
//初始化是賦值
function __construct($name, $age)
{
$this-name = $name;
$this-age = $age;
}
//魔術方法 把對象轉換成字符串格式 以備使用json_encode()函數
function __tostring() {
//對象轉化為json格式
return json_encode($this,JSON_FORCE_OBJECT);
}
}
//實例化對象
$person1 = new Student(‘Hza’, 20);
//輸出json格式
echo $person1;
?
擴展資料:
json六個構造字符:
begin-array = ws %x5B ws ; [ 左方括號
begin-object = ws %x7B ws ; { 左大括號
end-array = ws %x5D ws ; ] 右方括號
end-object = ws %x7D ws ; } 右大括號
name-separator = ws %x3A ws ; : 冒號
value-separator = ws %x2C ws ; , 逗號
在這六個構造字符的前或後允許存在無意義的空白符(ws):
ws = *(%x20 /; 空間
%x09 /; 水平標籤
%x0A /; 換行或換行
%x0D); 回程
php 將json格式數據轉換成數組的方法
如下所示:
//json格式數據
$data
=
‘[{
“F_ModuleId”:
“1”,
“F_ParentId”:
“0”,
“F_EnCode”:
“SysManage”,}]’;
//轉換成數組
$arr
=
json_decode($data,true);
//輸出
var_dump($arr);
以上這篇php
將json格式數據轉換成數組的方法就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
您可能感興趣的文章:PHP使用JSON和將json還原成數組在PHP語言中使用JSON和將json還原成數組的方法PHP實現數組轉JSon和JSon轉數組的方法示例php
json轉換成數組形式代碼分享php數組轉成json格式的方法
PHP改變json格式(先把json轉換成數組,處理成另一種樣式)
array(4) {
[“project_name”] = string(7) “模板1”
[“project_info”] = array(2) {
[0] = array(2) {
[0] = string(16) “項目主標題1”
[1] = string(12) “子標題1.1”
}
[1] = array(2) {
[0] = string(16) “項目主標題2”
[1] = string(12) “子標題2.1”
}
}
[“audit_info”] = array(2) {
[0] = array(2) {
[0] = string(16) “審核主標題1”
[1] = string(12) “子標題1.1”
}
[1] = array(2) {
[0] = string(16) “審核主標題2”
[1] = string(12) “子標題2.1”
}
}
[“image_info”] = array(2) {
[0] = array(2) {
[“title”] = string(15) “身份證信息”
[“val”] = string(58) “”
}
[1] = array(2) {
[“title”] = string(12) “抵押證明”
[“val”] = string(58) “”
}
}
}
array(2) {
[0] = array(1) {
[0] = array(2) {
[“title”] = string(12) “審核信息”
[“content”] = array(6) {
[0] = array(2) {
[“title”] = string(15) “身份信息已”
[“val”] = string(58) “”
}
[1] = array(2) {
[“title”] = string(15) “房產產權證”
[“val”] = string(58) “”
}
[2] = array(2) {
[“title”] = string(15) “房產產權證”
[“val”] = string(58) “”
}
[3] = array(2) {
[“title”] = string(15) “房產產權證”
[“val”] = string(58) “”
}
[4] = array(2) {
[“title”] = string(15) “房產產權證”
[“val”] = string(58) “”
}
[5] = array(2) {
[“title”] = string(15) “房產產權證”
[“val”] = string(58) “”
}
}
}
}
[1] = array(2) {
[0] = array(2) {
[“title”] = string(12) “房產信息”
[“content”] = array(4) {
[0] = array(1) {
[“title”] = string(12) “房產位置”
}
[1] = array(1) {
[“title”] = string(12) “房產類型”
}
[2] = array(1) {
[“title”] = string(12) “建築設計”
}
[3] = array(1) {
[“title”] = string(18) “市場參考介紹”
}
}
}
[1] = array(1) {
[“title”] = string(12) “項目介紹”
}
}
}
沒看出你這兩個json有什麼關聯,自己json_decode組裝去吧
php轉換成json數據格式
json和php數組 格式的互相轉換,參考如下:$php_json = json_encode($json_arr); //把php數組格式轉換成 json 格式的數據echo $php_json;$php_json = json_decode($php_json); //再把json格式的數據轉換成php數組print_r($php_json);json數組$json = ‘[{“id”:”22″,”name”:”33″,”descn”:”44″}]’; //json格式的數組轉換成 php的數組$arr = (Array)json_decode($json);echo $arr[0]-id; //用對象的方式訪問
像這樣的問題很常見,沒必要在到處問,你多在後盾找找就不必這麼麻煩了
php怎麼將數組數組轉化為json格式的數據
一、json_encode()
[php] view plain copy
?php
$arr =array (‘a’=1,’b’=2,’c’=3,’d’=4,’e’=5);
echo json_encode($arr);
?
輸出
[php] view plain copy
{“a”:1,”b”:2,”c”:3,”d”:4,”e”:5}
再看一個對象轉換的例子:
[php] view plain copy
$obj-body = ‘another post’;
$obj-id = 21;
$obj-approved = true;
$obj-favorite_count = 1;
$obj-status = NULL;
echo json_encode($obj);
輸出
[php] view plain copy
{
“body”:”another post”,
“id”:21,
“approved”:true,
“favorite_count”:1,
“status”:null
}
由於json只接受utf-8編碼的字符,所以json_encode()的參數必須是utf-8編碼,否則會得到空字符或者null。當中文使用GB2312編碼,或者外文使用ISO-8859-1編碼的時候,這一點要特別注意。
二、索引數組和關聯數組
PHP支持兩種數組,一種是只保存”值”(value)的索引數組(indexed array),另一種是保存”名值對”(name/value)的關聯數組(associative array)。
由於javascript不支持關聯數組,所以json_encode()只將索引數組(indexed array)轉為數組格式,而將關聯數組(associative array)轉為對象格式。
比如,現在有一個索引數組
[php] view plain copy
$arr = Array(‘one’,’two’, ‘three’);
echo json_encode($arr);
輸出
[php] view plain copy
[“one”,”two”,”three”]
如果將它改為關聯數組:
[php] view plain copy
$arr = Array(‘1’=’one’,’2’=’two’,’3’=’three’);
echo json_encode($arr);
輸出變為
[php] view plain copy
{“1″:”one”,”2″:”two”,”3″:”three”}
注意,數據格式從”[]”(數組)變成了”{}”(對象)。
如果你需要將”索引數組”強制轉化成”對象”,可以這樣寫
[php] view plain copy
json_encode( (object)$arr);
或者
[php] view plain copy
json_encode ( $arr, JSON_FORCE_OBJECT );
三、類(class)的轉換
下面是一個PHP的類:
[php] view plain copy
class Foo {
const ERROR_CODE = ‘404’;
public $public_ex =’this is public’;
private $private_ex =’this is private!’;
protected$protected_ex =’this should be protected’;
publicfunction getErrorCode() {
returnself::ERROR_CODE;
}
}
現在,對這個類的實例進行json轉換:
[php] view plain copy
$foo =new Foo;
$foo_json = json_encode($foo);
echo $foo_json;
輸出結果是
[php] view plain copy
{“public_ex”:”this is public”}
四、json_decode() 可以看到,除了公開變量(public),其他東西(常量、私有變量、方法等等)都遺失了。
該函數用於將json文本轉換為相應的PHP數據結構。下面是一個例子:
[php] view plain copy
$json ='{“foo”: 12345}’;
$obj = json_decode($json);
print $obj-{‘foo’};// 12345
通常情況下,json_decode()總是返回一個PHP對象,而不是數組。比如:
[php] view plain copy
$json ='{“a”:1,”b”:2,”c”:3,”d”:4,”e”:5}’;
var_dump(json_decode($json));
結果就是生成一個PHP對象:
[php] view plain copy
object(stdClass)#1 (5) {
[“a”] = int(1)
[“b”] = int(2)
[“c”] = int(3)
[“d”] = int(4)
[“e”] = int(5)
}
如果想要強制生成PHP關聯數組,json_decode()需要加一個參數true:
[php] view plain copy
$json ='{“a”:1,”b”:2,”c”:3,”d”:4,”e”:5}’;
var_dump(json_decode($json,true));
結果就生成了一個關聯數組:
[php] view plain copy
array(5) {
[“a”] = int(1)
[“b”] = int(2)
[“c”] = int(3)
[“d”] = int(4)
[“e”] = int(5)
}
下面三種json寫法都是錯的,你能看出錯在哪裡嗎?五、json_decode()的常見錯誤
[php] view plain copy
$bad_json =”{ ‘bar’: ‘baz’ }”;
$bad_json ='{ bar: “baz” }’;
$bad_json ='{ “bar”: “baz”, }’;
第一個的錯誤是,json的分隔符(delimiter)只允許使用雙引號,不能使用單引號。第二個的錯誤是,json名值對的”名”(冒號左邊的部分),任何情況下都必須使用雙引號。第三個的錯誤是,最後一個值之後不能添加逗號(trailing comma)。 對這三個字符串執行json_decode()都將返回null,並且報錯。
另外,json只能用來表示對象(object)和數組(array),如果對一個字符串或數值使用json_decode(),將會返回null。
[php] view plain copy
var_dump(json_decode(“Hello World”));//null
php如何輸出中文json格式字符串
php如何輸出中文json格式字符串
如何對json格式的字符串進行轉換,php提供了兩個函數:
json_encode 對變量進行 JSON 編碼
json_decode 對 JSON 格式的字符串進行編碼
下面看個實例:
$arr = [‘a’, ‘b’, ‘c’];echo json_encode($arr);
輸出為:
[“a”,”b”,”c”]
但是,當我們在數組中放入中文的時候,就會出現問題:
$arr = [ ‘世界’, ‘你好’,
];echo json_encode($arr);
輸出的結果為:
[“\u4e16\u754c”,”\u4f60\u597d”]
這個結果顯然不是我們想要的,但是為什麼出現這個呢?
因為當我們的值中包含中文時,php對他進行json編碼時底層會對中文進行unicode編碼,導致結果不可讀,那該怎麼解決呢?
方法一
可以利用 urlencode 和 urldecode 方法繞過這個轉碼為 unicode 的過程,先將中文字段進行urlencode,然後json_encode,最後再用urldecode處理結果,便可以正常顯示中文。具體代碼如下:
$arr = [ ‘世界’, ‘你好’,
];echo urldecode(json_encode(array_map(‘urlencode’, $arr)));
輸出結果為:
[“世界”,”你好”]
方法二
自PHP5.4版本,官方就已經給Json新增了一個選項: JSON_UNESCAPED_UNICODE。加上這個選項後,就不會自動把中文編碼了。具體代碼如下:
$arr = [ ‘世界’, ‘你好’,
];echo json_encode($arr, JSON_UNESCAPED_UNICODE);
[“世界”,”你好”]
看吧,這才是我們想要的結果 :)
原創文章,作者:AGUGU,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/317524.html