我有一个脚本,可以从基于 Web 的 API 接收各种不同的数据数组。该程序以 ISO 8601 格式 (2013-08-12T09:00:00:000-0600) 返回所有日期。我有一个函数可以轻松地将它们转换为 unix 时间戳,但是我必须每次都将 value 字段提交给该函数,这可能会变得乏味。
诀窍是,根据我当时正在运行的操作,来自网络应用程序的响应数组会非常不同。单维和多维。日期持有者也有许多关键名称。
那么,是否有某种方法可以轻松地将完整的数据数组提交给一个函数,该函数将查找 ISO 时间戳并将它们就地转换为 unix 时间戳,返回与换出时间戳相同的数组?
这是我用来一次转换一个的函数:
function tstamptotime($tstamp)
{
// converts ISODATE to unix date
// 1984-09-01T14:21:31Z
sscanf($tstamp, "%u-%u-%uT%u:%u:%uZ", $year, $month, $day, $hour, $min, $sec);
$newtstamp = mktime($hour, $min, $sec, $month, $day, $year);
return $newtstamp;
}
这是我想出的,但我意识到这个想法不会考虑多维数组,诀窍是数组可以是 2-25 层深的任何地方:
foreach($results['data'] as $key => $value) {
if(strpos($key,'Date') !== false) {
if(strlen($value) == 28) {
$results['data'][$key] = tstamptotime($value);
}
}
}
如您所见,值的键将始终包含“日期”一词作为键名的一部分。
如果有帮助,我示例中的“results['data']”数组来自我使用 json_encode 创建数组的 json 字符串。因此,如果可以在那里完成某些事情,我也确实拥有纯文本中的所有值。
谢谢!