我正在尝试从键中提取所有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