2012-09-06 54 views
0

我有一个多维数组。格式如下:PHP查找即将发生的事件

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())并返回它的值? 谢谢!

回答

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 
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);