PHP查找即将举办的活动

时间:2012-09-06 07:58:28

标签: php arrays multidimensional-array foreach

我有一个多维数组。格式如下:

Array
(
    [1] => 2012.09.04;01:00;NZD;ANZ Commodity Price;1;0.5%;;-0.5%;1346720400
    [2] => 2012.09.04;01:30;AUD;Current Account Balance;2;-11.80B;-12.2B;-14.90B;1346722200
    [3] => 2012.09.04;01:30;JPY;Labor Cash Earnings (YoY);2;-1.2%;-0.3%;-0.6%;1346722200
    [4] => 2012.09.04;04:30;AUD;RBA Interest Rate Decision;3;3.5%;3.5%;3.5%;1346733000
    [5] => 2012.09.04;05:45;CHF;Gross Domestic Product (YoY);3;0.5%;1.6%;2.0%;1346737500
)

现在我使用此功能转换它:

private function array_to_json($array) {    

    $arr_out = array();
    foreach ($array as &$r) {
       $arr_out[] = explode(";", $r);
    }
    unset($r);
    return $arr_out;
}

得到这个结果:

Array
(
    [0] => Array
        (
            [0] => 2012.09.04
            [1] => 01:00
            [2] => NZD
            [3] => ANZ Commodity Price
            [4] => 1
            [5] => 0.5%
            [6] => 
            [7] => -0.5%
            [8] => 1346720400
        )

    [1] => Array
        (
            [0] => 2012.09.04
            [1] => 01:30
            [2] => AUD
            [3] => Current Account Balance
            [4] => 2
            [5] => -11.80B
            [6] => -12.2B
            [7] => -14.90B
            [8] => 1346722200
        )

    [2] => Array
        (
            [0] => 2012.09.04
            [1] => 01:30
            [2] => JPY
            [3] => Labor Cash Earnings (YoY)
            [4] => 2
            [5] => -1.2%
            [6] => -0.3%
            [7] => -0.6%
            [8] => 1346722200
        )

    [3] => Array
        (
            [0] => 2012.09.04
            [1] => 04:30
            [2] => AUD
            [3] => RBA Interest Rate Decision
            [4] => 3
            [5] => 3.5%
            [6] => 3.5%
            [7] => 3.5%
            [8] => 1346733000
        )

    [4] => Array
        (
            [0] => 2012.09.04
            [1] => 05:45
            [2] => CHF
            [3] => Gross Domestic Product (YoY)
            [4] => 3
            [5] => 0.5%
            [6] => 1.6%
            [7] => 2.0%
            [8] => 1346737500
        )

    [5] => Array
        (
            [0] => 2012.09.04
            [1] => 05:45
            [2] => CHF
            [3] => Gross Domestic Product s.a. (QoQ)
            [4] => 2
            [5] => -0.1%
            [6] => 0.2%
            [7] => 0.7%
            [8] => 1346737500
        )
)

其中[8]是时间戳。

如何找到第一个即将发生的事件([8]> time())并返回它的值? 谢谢!

2 个答案:

答案 0 :(得分:1)

你必须浏览所有[8]项,并检查它们是否大于时间()。如果是这样,那么制作一个数组。最后,在此数组上使用min function来获取最小的数字。

代码:

$future = array();
foreach($arr_out as $a)
    if ($a[8] > time())
        $future[] = $a[8];

$nearest = min($future); //contains the first upcoming event

答案 1 :(得分:0)

试试这个: -

$marr = array
(
   array
        (
            '0' => '2012.09.04',
            '1' => '01:30',
            '2' => 'AUD',
            '3' => 'Current Account Balance',
            '4' => 2,
            '5' => '-11.80B',
            '6' => '-12.2B',
            '7' => '-14.90B',
            '8' => 1346919271,
        ),array
        (
            '0' => '2012.09.04',
            '1' => '01:30',
            '2' => 'AUD',
            '3' => 'Current Account Balance',
            '4' => 2,
            '5' => '-11.80B',
            '6' => '-12.2B',
            '7' => '-14.90B',
            '8' => 1346919686,
        )
);

$upComingArray = '';
foreach($marr as $key)
{
    $end =  end($key);
    if ($end > time()){

        $upComingArray[] = $key;
    }
}
echo "<pre>";
print_r($upComingArray);