微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Foreach 从一个数组访问数据

如何解决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 举报,一经查实,本站将立刻删除。