我有一个数组$data_list
其中包含一个元素date_time
,其中包含以下格式的数据:
[0]=>
array(2) {
["date_time"]=>
string(19) "2014-11-14 09:30:03"
["follower_count"]=>
string(4) "1567"
}
事实上,这是$data_list
的全部数据 http://pastebin.com/wA7f9Aet:
我想将date_time
元素一分为二,所以它看起来像这样:
[0]=>
array(2) {
["date"]=>
string(19) "2014-11-14"
["date"]=>
string(5) "09:02"
["follower_count"]=>
string(4) "1567"
}
请注意,date_time
元素已拆分,时间部分也已缩短为HH:MM
我有以下循环来遍历我的数组$data_list
并列出了每行应该做什么。
foreach ($data_list as &$data) {
$datetime = new DateTime($data['date_time']); // creates new var
$date = $datetime->format('Y-m-d'); // formats the date portion
$time = $datetime->format('H:i'); // formats the time portion
unset($data['date_time']); // Removes the old date_time element
array_push($data_list,$time); // adds new time element
array_push($data_list,$date); // adds new date element
}
- 循环访问
$data_list
调用每个数组元素$data
- 创建一个新的变量
$datetime
- 仅设置此部分的日期的格式
- 格式化只是这部分的时间
- 删除旧的
$date_time
元素 - 添加新的
$time
元素 - 添加 ne
$date
元素
这在array_push行之前工作正常。我不知道为什么。我收到以下错误:
警告:第 70 行的/应用程序/MAMP/路径中的非法字符串偏移量"date_time"
致命错误:未捕获的异常"异常",消息为"日期时间::__construct():无法在位置 0 (0) 解析时间字符串 (0):
我无法弄清楚为什么它会在array_push
部分倒下。在我看来,它试图调用现在未设置的date_time
元素,但为什么呢?
添加了检测数组确切索引的$key
,以便您可以将date
和time
推送到同一index
foreach ($data_list as $key=>&$data) {
$datetime = new DateTime($data['date_time']); // creates new var
$date = $datetime->format('Y-m-d'); // formats the date portion
$time = $datetime->format('H:i'); // formats the time portion
unset($data['date_time']); // Removes the old date_time element
array_push($data_list[$key],$time); // adds new time element
array_push($data_list[$key],$date); // adds new date element
}