如何解决Foreach 从一个数组访问数据
我需要帮助处理这个案子。
我有这个 json 结构:
Array
(
[_Metadata] => Array
(
[count] => 3413
[next] => Array
(
[rel] => next
)
[last] => Array
(
[rel] => last
)
[self] => Array
(
[rel] => self
)
[shardsstatusResult] => Array
(
[partialResult] =>
)
)
[conversationHistoryRecords] => Array
(
[0] => Array
(
[info] => Array
(
[startTime] => 2021-02-25 02:57:52.451+0000
[startTimeL] => 1614221872451
[endTime] => 2021-02-25 13:39:24.013+0000
[endTimeL] => 1614260364013
[duration] => 38491562
[conversationId] => 847b98b7-qd87-490d-p875-43cfed34f122
[brandId] => 59448905
[latestAgentId] => 1482731814
[latestAgentNickname] => Marilia
[latestAgentFullName] => Marilia
[latestAgentLoginName] => Marilia
[1] => Array
(
[info] => Array
(
[startTime] => 2021-02-25 02:56:35.787+0000
[startTimeL] => 1614221795787
[endTime] => 2021-02-25 11:57:46.051+0000
[endTimeL] => 1614254266051
[duration] => 32470264
[conversationId] => 847b98b7-qd87-490d-p875-43cfed55f122
[brandId] => 59448905
[latestAgentId] => 1637379330
[latestAgentNickname] => Matheus
[latestAgentFullName] => Matheus
[latestAgentLoginName] => Matheus
[2] => Array
(
[info] => Array
(
[startTime] => 2021-02-25 02:56:18.950+0000
[startTimeL] => 1614221778950
[endTime] => 2021-02-25 02:57:37.865+0000
[endTimeL] => 1614221857865
[duration] => 78915
[conversationId] => 847b87b7-qd87-490d-p875-43cfed55f122
[brandId] => 59448905
[latestAgentId] => 1637379330
[latestAgentNickname] => Lucas
[latestAgentFullName] => Lucas
[latestAgentLoginName] => Lucas
我需要从所有索引数组 ([1],[2],[3]) 的 [conversationHistoryRecords] -> [info] -> [latestAgentId] 中获取数据... 我在这里看到了任何案例和一些 Youtube 视频,但我没有找到任何方法来做到这一点。
我已经尝试过这种方式:
foreach ($MensagensHistoricas['conversationHistoryRecords'] as $Nivel1 => $Result){
foreach ($Result['info'] as $Nivel2 => $Result2 ) {
print_r($Result2)
;}
;}
foreach ($MensagensHistoricas['conversationHistoryRecords'] as $Nivel1){
foreach($Nivel1['info'] as $Nivel2){
print_r($Nivel2['latestAgentId']);
;}
;}
但是我没有成功。 有人可以帮我吗?
解决方法
您可以像这样从每个数组中提取 info
列:
$records = array_column($MensagensHistoricas['conversationHistoryRecords'],'info');
foreach($records as $record) {
print_r($record);
// or
echo $record['latestAgentId']; // etc...
}
如果您真的只对 latestAgentId
感兴趣而不需要其余部分,那么也将其提取出来:
$agentids = array_column(array_column($MensagensHistoricas['conversationHistoryRecords'],'info'),'latestAgentId');
foreach($agentids as $id) {
echo $id;
}
,
这里没有魔法,你只需要一次迭代和正确的成员路径来访问所需的属性:
<?php
$input = [
'conversationHistoryRecords' => [
[
'info' => [
'latestAgentId' => 1482731814
]
],[
'info' => [
'latestAgentId' => 1637379330
]
],[
'info' => [
'latestAgentId' => 1637379330
]
]
]
];
$output = [];
array_walk($input['conversationHistoryRecords'],function ($conversationHistoryRecords) use (&$output) {
$output[] = $conversationHistoryRecords['info']['latestAgentId'];
});
print_r($output);
明显的输出是:
Array
(
[0] => 1482731814
[1] => 1637379330
[2] => 1637379330
)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。