簡體   English   中英

PHP - 如何從動態 JSON 響應中獲取鍵值

[英]PHP - How to get key values from a dynamic JSON response

我有一個 JSON 響應,如果存在某個值,我的代碼需要提取鍵值。

例如。

如果此標題存在,則顯示它的鍵值等。

這是我的 JSON 包:

{
    "Data": {
        "Rows": [{
            "Title": "Economy Road",
            "ServiceType": "6. Economy Road (Pallets)",
            "GrandPrice": 14.50
        }, {
            "Title": "Road Freight",
            "ServiceType": "1. Road Freight",
            "GrandPrice": 16.50
        }, {
            "Title": "Home Delivery",
            "ServiceType": "Platinum",
            "GrandPrice": 10.50
        }]
    }
}

如果與 ServiceType 匹配,我將如何遍歷此 JSON 數據並顯示 GrandPrice?

例如,如果 ServiceType = "1. Road Freight",則顯示 GrandPrice 為 16.50 等。

我還嘗試解碼 json 數據並使用固定索引號提取鍵值,如下所示:

$data_result_json_decoded->Data->Rows[1]->ServiceType;

然而,這個 JSON 響應不是固定的,而是動態的。

任何幫助將不勝感激。

你可以利用array_search通過值來搜索和array_column得到一個列比較和執行陣列內搜索

// set Array to search
$rows = $data_result_json_decoded->Data->Rows;

// String to search
$string = "1. Road Freight";
// get ServiceType array
$array_that_only_contains_ServiceType = array_column($rows, "ServiceType");
// First seach key
$key = array_search($string, $array_that_only_contains_ServiceType);

// get data from search key
$data = $rows[$key];

var_dump($data);

您需要在[Data]['Rows']數組中進行迭代以過濾行。 在這里,我在結果數組中采用了ServiceType匹配的行。

$json = '{
    "Data": {
        "Rows": [{
            "Title": "Economy Road",
            "ServiceType": "6. Economy Road (Pallets)",
            "GrandPrice": 14.50
        }, {
            "Title": "Road Freight",
            "ServiceType": "1. Road Freight",
            "GrandPrice": 16.50
        }, {
            "Title": "Home Delivery",
            "ServiceType": "Platinum",
            "GrandPrice": 10.50
        }]
    }
}';
$data = json_decode( $json, true );
$search = '1. Road Freight';
$result = [];

foreach ($data['Data']['Rows'] as $item) {
    if( $item['ServiceType'] == $search ){
        $result [] = $item;
      //you can also echo here as you wanted
        echo $item['GrandPrice'];
    }
}

var_dump($result);

跑到這里

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM