[英]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.