如何获取:对于数组中的每个json对象,获取嵌套值php



我正在尝试从键中提取所有String值:ERRORS。到目前为止,这是我的代码,我已经能够"取消嵌套"2层,但我似乎再也无法做到这一点了。有人能告诉我如何获取密钥的值吗:ERRORS。

我想将所有字符串值存储在数组中

我有以下数据结构。

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', ), ), ),

a 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"];
}

根据您问题中的示例数据,这将生成以下输出(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

最新更新