从PHP数组中选择特定键,然后比较它们

时间:2013-11-25 03:53:23

标签: php arrays

任何帮助都会非常感激。

基本上我要做的是,对于每个“ticketX”数组,选择第一个响应(按日期),然后选择帮助台的第一个响应。因此,通过下面的示例,我希望返回以下内容:

Ticket 1

键“2”和日期“2013-11-22 16:35:51”
键“1”和日期“2013-11-22 16:51:15”

Ticket 2

键“5”和日期“2013-11-22 14:41:27”
键“3”和日期“2013-11-22 15:47:02”

我想下一个合乎逻辑的事情是将这些结果放到另一个单独的数组中,然后我可以比较它?这里的最终目标是计算服务台的响应时间,从客户的第一个帖子到服务台的回复。

我不确定如何处理这个问题,所以我很困惑。我可能会把一些东西混在一起,但我宁愿先寻求指导!

目前我刚才有这个:

foreach($tickets AS $key => $value) {
    if(count($value) > 1) {
        foreach($value AS $value2) {
            echo = $value2['created'];
        }
    }
}

以下是数组的示例:

Array
(
    [ticket1] => Array
        (
            [0] => Array
                (
                    [created] => 2013-11-22 17:03:31
                    [author] => 1
                )

            [1] => Array
                (
                    [created] => 2013-11-22 16:51:15
                    [author] => helpdesk
                )

            [2] => Array
                (
                    [created] => 2013-11-22 16:35:51
                    [author] => 1
                )

        )

    [ticket2] => Array
        (
            [0] => Array
                (
                    [created] => 2013-11-22 16:48:17
                    [author] => helpdesk
                )

            [1] => Array
                (
                    [created] => 2013-11-22 16:20:18
                    [author] => 1
                )

            [2] => Array
                (
                    [created] => 2013-11-22 15:49:16
                    [author] => helpdesk
                )

            [3] => Array
                (
                    [created] => 2013-11-22 15:47:02
                    [author] => helpdesk
                )

            [4] => Array
                (
                    [created] => 2013-11-22 15:44:57
                    [author] => 2
                )

            [5] => Array
                (
                    [created] => 2013-11-22 14:41:27
                    [author] => 1
                )

        )
)

1 个答案:

答案 0 :(得分:0)

听起来你正试图从事件发生的那一刻开始追踪到帮助台的第一个动作。

如果是这样,您希望捕获数组中的第一个条目,以及数组中的第一个帮助台条目。

一些让人想起这个的代码应该可行

$first = true;
$result = array();
foreach($tickets AS $key => $value) {
//    if(count($value) > 1) {
        foreach($value AS $value2) {
            if($first){
                 $result[$key]['created'] = $value2['created'];
                 $first = false;
            }else if('helpdesk' == $value2['author']){
                 $result[$key]['responded'] = $value2['created'];
                 break;
            }
        }
//    }  If check here is not actually required
}

这将为您提供计算每张票所需的两个变量。您应该能够使用php的date()和strtotime()函数来实现目标的其余部分。