【发布时间】:2019-04-15 15:19:36
【问题描述】:
我之前问了一个问题,但意识到我问错了。我有一个采用以下格式的数组
Array
(
[0] => Array
(
[ID] => 10000
[Date] => 21/11/2013
[Total] => 10
)
...
)
所以它有一个 ID、Date 和 Total。一个问题是,我不知道 Date 列可能是什么格式,但无论是什么格式,我都需要将其转换为 dmy 格式。
所以我正在循环我的数组,我知道键永远是日期。
foreach($this->csvData as $item) {
foreach($item as $key => $value) {
if($key === 'Date') {
$item[$key][$value] = date("dmy", strtotime($value));
}
}
}
我在上面遇到了几个问题。首先,在循环之后,如果我输出$this->csvData,则日期值尚未转换为新值。我知道我在正确的地方,因为如果我在 if 中这样做
print_r(date("dmy", strtotime($value));
我可以看到更改的日期。我不认为我重新分配它们是正确的吗?
我正在尝试做的另一件事是这个。如果日期完全错误,说一些随机的东西,比如23455,然后我想从数组中删除整个元素。
这可能吗?我知道验证日期,但它似乎总是针对一种特定格式进行验证,而我不知道格式是什么。
谢谢
【问题讨论】:
-
参考
foreach($this->csvData as &$item) -
我遇到了一个格式不正确的数值
-
你应该这样做
$item[$key] = date("dmy", strtotime($value));- 没有额外的$value索引 -
您收到此异常可能是因为
strtotime()无法将$value转换为时间格式。