php循環json
① 如何在php中解析json
目前,JSON已經成為最流行的數據交換格式之一,各大網站的API幾乎都支持它。
從5.2版本開始,PHP原生提供json_encode()和json_decode()函數,前者用於編碼,後者用於解碼。
一、json_encode()
該函數主要用來將數組和對象,轉換為json格式。先看一個數組轉換的例子:
$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}
由於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)轉為對象格式。
比如,現在有一個索引數組
$arr = Array('one', 'two', 'three');
echo json_encode($arr);
結果為:
["one","two","three"]
三、類(class)的轉換
下面是一個PHP的類: 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'; public function getErrorCode() { return self::ERROR_CODE; } }
現在,對這個類的實例進行json轉換:
$foo = new Foo;
$foo_json = json_encode($foo);
echo $foo_json;
輸出結果是
{"public_ex":"this is public"}
可以看到,除了公開變數(public),其他東西(常量、私有變數、方法等等)都遺失了。
② php 循環輸出 json 數組
<?php
$Tdata='[{"A_Name":"a1","ICNo":"","A_ContNo":"","A_QQNo":""},{"A_Name":"a2","ICNo":"","A_ContNo":"","A_QQNo":""},{"A_Name":"a3","ICNo":"","A_ContNo":"","A_QQNo":""}]';
$arr=json_decode($Tdata,true);
//var_mp($arr);
echo stripcslashes ($arr[0][A_Name]);
?>
上面的方法可以列印輸出,json_decode($Tdata)輸出的結果是一個對應,而json_decode($Tdata,true)輸出的是一個數組
③ php獲取json裡面內容
$jsonString='....yourjson....';
$result=json_decode($jsonString,true);
$dataCount=count($result['data']);
if($dataCount>0){
for($i=0;$i<$dataCount;$i++){
//這里處理每一條物流狀態
}
}
④ php 讀取 json 裡面的欄位內容
方法和詳細的操作步驟如下:
1、第一步,打開php編輯器,創建一個新的php文件,例如:index.php,然後填寫基本代碼,見下圖,轉到下面的步驟。
⑤ php 中 json_encode 只保留 value
循環將每個數組的值裝入一個新數組,然後將新數組轉換成json格式即可實現。示例如下:
<?php
header("Content-type:text/html;charset=utf-8;");
$str='[{"id":"1","數據1":"11","數據2":"12"},{"id":"2","數據1":"21","數據2":"22"},{"id":"3","數據1":"31","數據2":"32"}]';
$data=json_decode($str,true);
$arr=array();
foreach($dataas$key=>$item){
$arr[]=array_values($item);
}
print_r(json_encode($arr));
//[["1","11","12"],["2","21","22"],["3","31","32"]]
?>
⑥ PHP使用POST傳遞json數據的接收與處理問題
前端傳給伺服器的只是json 格式的字元串,使用json_decode,
mixed json_decode ( string $json [, bool $assoc ] )
var_mp(json_decode($json));
var_mp(json_decode($json, true));
如果不帶參數,則返回為對象
帶上true時,返回數組
foreach($ARR as $k=>$v){
echo 'key='.$k.';value='.$v;
}
單獨處理每個key 和對應的value就好
⑦ php如何獲取json中數據
可以用$obj=>key 的方式直接讀取 也可以先轉換為數組 用遍歷數組的方法讀取
<?php
$json='{"a":100,"b":200,"c":300,"d":400,"e":500}';
//首先將json字元串轉換成關聯數組
$arr=json_decode($json,true);
//然後循環讀取數據
foreach($arras$item){
echo$item;
echo"<br/>";
}
?>
運行結果:
100
200
300
400
500