我有一个多维数组。格式如下:
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())并返回它的值? 谢谢!
答案 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);