php 数组里包含多个数组items解析成json方法:

$json_str = '{
"mid": "e34ed1c2d4",
"amount": 254,
"currency": "USD",
"external_order_id": "11",
"order_type": "GTC",
"application": "sed",
"version": "nostrud",
"checksum": "{checksum}",
"gateway": "KHFTBCRC3102",
"items": [
{
"currency":"USD",
"name": "Apple iPad with Retina",
"price": 55,
"quantity": 1
},
{
"currency":"USD",
"name": "Beats Solo Wireless",
"price": 199,
"quantity": 1
}],
"shipping_address": {
"first_name": "lin",
"last_name": "lastname",
"country": "DE",
"city": "hamburg city",
"address1": "this street address",
"postal_code": "10086",
"email": "10000@qq.com",
"phone": "12114569874",
"phone_country": "1",
"state": "Bayern"
},
"external_data": "test"
}';

echo "<hr/>";
echo "原始数据:";
var_dump($json_str);
echo "<pre/>";
$de_str = json_decode($json_str);
var_dump($de_str);
//die;
---------------------------------------------------
原始json数据:string(1057) "{
        "mid": "e34ed1c2d4",
        "amount": 254,
        "currency": "USD",
        "external_order_id": "11",
        "order_type": "GTC",
        "application": "sed",
        "version": "nostrud",
        "checksum": "{checksum}",
        "gateway": "KHFTBCRC3102",
        "items": [
        {
            "currency":"USD",
            "name": "Apple iPad with Retina",
            "price": 55,
            "quantity": 1
        },
        {
            "currency":"USD",
            "name": "Beats Solo Wireless",
            "price": 199,
            "quantity": 1
        }],
        "shipping_address": {
            "first_name": "lin",
            "last_name": "lastname",
            "country": "DE",
            "city": "hamburg city",
            "address1": "this street address",
            "postal_code": "10086",
            "email": "10000@qq.com",
            "phone": "12114569874",
            "phone_country": "1",
            "state": "Bayern"
        },
        "external_data": "test"
    }"

---------------------------------------------------
json_decode 后的数据格式:

object(stdClass)#1 (12) { ["mid"]=> string(10) "e34ed1c2d4" ["amount"]=> int(254) ["currency"]=> string(3) "USD" ["external_order_id"]=> string(2) "11" ["order_type"]=> string(3) "GTC" ["application"]=> string(3) "sed" ["version"]=> string(7) "nostrud" ["checksum"]=> string(10) "{checksum}" ["gateway"]=> string(12) "KHFTBCRC3102" ["items"]=> array(2) { [0]=> object(stdClass)#2 (4) { ["currency"]=> string(3) "USD" ["name"]=> string(22) "Apple iPad with Retina" ["price"]=> int(55) ["quantity"]=> int(1) } [1]=> object(stdClass)#3 (4) { ["currency"]=> string(3) "USD" ["name"]=> string(19) "Beats Solo Wireless" ["price"]=> int(199) ["quantity"]=> int(1) } } ["shipping_address"]=> object(stdClass)#4 (10) { ["first_name"]=> string(3) "lin" ["last_name"]=> string(8) "lastname" ["country"]=> string(2) "DE" ["city"]=> string(12) "hamburg city" ["address1"]=> string(19) "this street address" ["postal_code"]=> string(5) "10086" ["email"]=> string(12) "10000@qq.com" ["phone"]=> string(11) "12114569874" ["phone_country"]=> string(1) "1" ["state"]=> string(6) "Bayern" } ["external_data"]=> string(4) "test" }
---------------------------------------------------
重点:数组直接转json方式:
---------------------------------------------------

//只把数组的内层转为object
function array_to_object3($arr) {
if (gettype($arr) == 'array' ) {
foreach ($arr as $k => $v) {
if (gettype($v) == 'array') {
$arr[$k] = (object)array_to_object3($v);
}
}
return $arr;
}else{
return;
}
}
$arrHashCode['items'] = array_to_object3($GoodsArr);
//注: 因为json_encode (把数组转json)只转化最外层的数组,内层的数组不能转,所以内层的数组要额外转object格式
$json_str=json_encode($arrHashCode);

================================================================================================
附:

// 数组转对象,全转化   
public function array_to_object($arr) {
if (gettype($arr) == 'array' ) {
foreach ($arr as $k => $v) {
if (gettype($v) == 'array' || getType($v) == 'object') {
$arr[$k] = (object)$this->array_to_object($v);
}
}
return (object)$arr;
}elseif (getType($arr) == 'object') {
return (object)$arr;
}else{
return;
}
}
// 对象转数组
function object_to_array($obj){
$_arr=is_object($obj)?get_object_vars($obj):$obj;
   //内排序
//ksort($_arr);
$arr = null;
foreach($_arr as $key=>$val){
$val=(is_array($val))||is_object($val)?object_to_array($val):$val;
$arr[$key]=$val;
}
return $arr;
}
//数组转连接符
function array2String($arr = null){
if(is_null($arr) or !is_array($arr))
return false;
$str = '';
$arr_length = count($arr)-1;
foreach( $arr as $key => $value ){
if ($key=='checksum'){
continue;
}
$type=gettype($value);
if ($type=='array') {
$tostr=json_encode($value);
$str.=$key.'='.$tostr.'&';
}else{
$str.=$key.'='.$value.'&';
}
}
return urldecode($str); // 必须使用urldecode()方法处理明文字符串
}
原文地址:https://www.cnblogs.com/alex-13/p/13560512.html