PHP / JSON:在一个数组中对两种不同的时间戳格式进行排序

时间:2011-04-05 15:35:48

标签: php json facebook datetime sorting

我有一个来自Facebook和Twitter流的JSON输出的合并数组,我想将这两个排序为一个,但它们提供两个不同的时间戳:

Facebook:[created_time] => 1299839651 Twitter:[created_at] => Mon Mar 07 16:33:49 +0000 2011

目前,输出包含来自Array ( [data] => Array ( [0] => Array ( [id] =>(Facebook)开头且以[id_str] => 12345678964508161 ) )(Twitter)结尾的两个平台的完整JSON内容。 在中间部分,它看起来像这样:&limit=25&until=0 ) [0] => Array ( [text] =>(Facebook - > Twitter)。 我不知道如何处理这个问题。谢谢你的帮助。

2 个答案:

答案 0 :(得分:1)

您可以使用strtotime()将Twitter时间戳转换为更像Facebook时间戳的时间戳。

然后您只需根据数字时间戳

对它们进行排序

答案 1 :(得分:0)

这应该有效,假设我正确理解你的问题。

<?php

// assume $array is your array of associative arrays with created_time 
// being facebook timestamps, created_at being twitter


// takes as arguments two associative arrays with
// created_time keys to compare
function sort_by_created_time($arr1, $arr2)
{
    if ($arr1['created_time'] == $arr2['created_time'])
    {
        return 0;
    }
    elseif ($arr1['created_time'] > $arr2['created_time'])
    {
        return 1;
    }
    else
    {
        return -1;
    }
}

// go through each array, generate timestamps if needed
foreach ($array as &$row)
{
    if (!isset($row['created_time']))
    {
        // convert date formats to timestamps if we need to
        $row['created_time'] = strtotime($row['created_at']);
    }
}
unset($row);

usort($array, "sort_by_created_time");