簡體   English   中英

如何獲取:對於數組中的每個 json object 獲取嵌套值 php

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

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