[英]How to get : for each json object in array get nested value php
我正在嘗試從鍵中提取所有字符串值:錯誤。 到目前為止,這是我的代碼,我已經能夠“取消嵌套”2 層,但我似乎無法再進一步了。 有人可以告訴我如何訪問密鑰的值:錯誤。
我想將所有字符串值存儲在一個數組中
我有以下數據結構。
var_export($results_decoded):
array (
0 => array ( 'Result' => array ( 0 => array ( 'ERRORS' => '99012: Weborder number already exists : 20211049', ), ), ),
1 => array ( 'Result' => array ( 0 => array ( 'ERRORS' => '99012: Weborder number already exists : 20211048', ), ), ),
2 => array ( 'Result' => array ( 0 => array ( 'ERRORS' => '99012: Weborder number already exists : 20211050', ), ), ),
3 => array ( 'Result' => array ( 0 => array ( 'ERRORS' => '99012: Weborder number already exists : 20211050', ), ), ),
4 => array ( 'Result' => array ( 0 => array ( 'ERRORS' => '99012: Weborder number already exists : 20211049', ), ), ),
5 => array ( 'Result' => array ( 0 => array ( 'ERRORS' => '99012: Weborder number already exists : 20211046', ), ), ),
6 => array ( 'Result' => array ( 0 => array ( 'ERRORS' => '99012: Weborder number already exists : 20211045', ), ), ),
7 => array ( 'result' => '2007: New Web Order created successfully', ),
8 => array ( 'Result' => array ( 0 => array ( 'ERRORS' => '99012: Weborder number already exists : 20211046', ), ), ),
一個 return() 語句:
[{"Result":[{"ERRORS":"99012: Weborder number already exists : 20211049"}]},{"Result":[{"ERRORS":"99012: Weborder number already exists : 20211048"}]},{"Result":[{"ERRORS":"99012: Weborder number already exists : 20211050"}]}]
$results_array 的數據轉儲
array:2432 [▼
0 => array:1 [▼
"Result" => array:1 [▼
0 => array:1 [ …1]
]
]
1 => array:1 [▼
"Result" => array:1 [▼
0 => array:1 [ …1]
]
]
2 => array:1 [▼
"Result" => array:1 [▼
0 => array:1 [ …1]
]
]
3 => array:1 [▶]
4 => array:1 [▶]
5 => array:1 [▶]
6 => array:1 [▶]
7 => array:1 [▶]
8 => array:1 [▶]
9 => array:1 [▶]
我的代碼:
$data = Log::all('RESPONSE');
$results_decoded = json_decode($data, true);
foreach ($results_decoded as $inner_array){
foreach ($inner_array as $value){
$result_array[] = $value;
}
}
return($result_array);
您的原始數據(笨拙地)似乎在外部數組中包含兩種可能的數據結構。 大多數情況下,有一個指向錯誤數據的嵌套數組,但偶爾會有一個更簡單的結構,只包含一條成功消息。
此代碼將檢查每個項目以查看是否存在 ERRORS 元素。 如果有,它會使用它。 如果不是,它會采用更簡單的結構並使用它。
foreach ($results_decoded as $inner_val){
if (isset($inner_val["Result"][0]["ERRORS"])) $result_array[] = $inner_val["Result"][0]["ERRORS"];
else $result_array[] = $inner_val["result"];
}
根據您問題中的示例數據,這將生成以下 output(格式為 JSON):
[
"99012: Weborder number already exists : 20211049",
"99012: Weborder number already exists : 20211048",
"99012: Weborder number already exists : 20211050",
"99012: Weborder number already exists : 20211050",
"99012: Weborder number already exists : 20211049",
"99012: Weborder number already exists : 20211046",
"99012: Weborder number already exists : 20211045",
"2007: New Web Order created successfully",
"99012: Weborder number already exists : 20211046"
]
如果我理解正確的話,我認為這就是您要找的東西。
現場演示: https://3v4l.org/TEPab
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.