【问题标题】:PHP - Array grouping results from SOQLPHP - SOQL 的数组分组结果
【发布时间】:2015-01-27 00:58:06
【问题描述】:

我在对从 SOQL 查询返回的数组进行分组时遇到问题。

数组内容如下(这是一个剪裁的版本,以给出结构的概念):

QueryResult Object
(
[queryLocator] => 
[done] => 1
[records] => Array
    (
        [0] => stdClass Object
            (
                [Id] => 
                [Contact] => 003b000000Ii7HcAAJ
                [Session] => stdClass Object
                    (
                        [Id] => 
                        [Name] => Future Leaders (Day1)
                    )

            )

        [1] => stdClass Object
            (
                [Id] => 
                [Contact] => 003b000000Ii6jtAAB
                [Session] => stdClass Object
                    (
                        [Id] => 
                        [Name] => Future Leaders Program (Day1)
                    )

            )

        [2] => stdClass Object
            (
                [Id] => 
                [Contact] => 003b000000Ii7MIAAZ
                [Session] => stdClass Object
                    (
                        [Id] => 
                        [Name] => Future Leaders Program (Day2)
                    )

            )

        [3] => stdClass Object
            (
                [Id] => 
                [Contact] => 003b000000KL4G4AAL
                [Session] => stdClass Object
                    (
                        [Id] => 
                        [Name] => Utilities Chat
                    )

            )

        [4] => stdClass Object
            (
                [Id] => 
                [Contact] => 003b000000Ii62fAAB
                [Session] => stdClass Object
                    (
                        [Id] => 
                        [Name] => Working Group Update
                    )

            )

    )

问题是查询返回重复的联系人和重复的会话,所以我想将其排序到一个新数组中,其中包含不同的联系人以及与联系人关联的所有会话。它是一个 SOQL 查询,所以我不能 SELECT DISTINCT 和 GROUP BY 没有给我正确的结果。

任何帮助将不胜感激,因为我的 PHP 技能非常生疏!

【问题讨论】:

    标签: php arrays multidimensional-array soql


    【解决方案1】:

    一个问题是你有一个对象数组。您正在混合数组和对象。根据您的需要,我将逐步遍历记录数组并创建一个新数组,其中联系人作为键,会话作为每个键的对象数组。

    $contacts = array();
    foreach($records as $record)
    {
        if(!exists($contacts[$record->Contact]))
            $contacts[$record->Contact] = array();
        $contacts[$record->Contact][] = $record->Session;
    }
    

    【讨论】:

    • 太棒了!!谢谢,它做了一些调整。
    猜你喜欢
    • 2019-01-26
    • 2012-02-29
    • 1970-01-01
    • 1970-01-01
    • 2013-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多