我有数组数组,我想更改日期格式。我想把它搞定如下
foreach ($toReturn as $value) {
$start_date = new DateTime($value['start_date']);
$value['start_date'] = $start_date->format('m-d-Y');
$end_date = new DateTime($value['end_date']);
$value['end_date'] = $end_date->format('m-d-Y');
}
这里的格式被改变但是它没有用新的替换数组值?为什么??
答案 0 :(得分:3)
如果您想更改foreach中的值,则需要通过引用访问它。
将foreach ($toReturn as $value)
更改为foreach ($toReturn as &$value)
答案 1 :(得分:3)
您必须通过引用更改值:
foreach ($toReturn as &$value) {
$start_date = new DateTime($value['start_date']);
$value['start_date'] = $start_date->format('m-d-Y');
$end_date = new DateTime($value['end_date']);
$value['end_date'] = $end_date->format('m-d-Y');
}
答案 2 :(得分:2)
您应该使用参考运算符&
来更改原始数组,否则PHP将其视为与原始数据不同的本地数据,并且该本地数组中的更改将不会反映到原始数组。
foreach ($toReturn as &$value) {
$start_date = new DateTime($value['start_date']);
$value['start_date'] = $start_date->format('m-d-Y');
$end_date = new DateTime($value['end_date']);
$value['end_date'] = $end_date->format('m-d-Y');
}
答案 3 :(得分:1)
或者,如果您不希望使用“按引用传递”方法,则可以使用此方法,甚至可以创建新变量。
foreach ($toReturn as $key => $value) {
$start_date = new DateTime($value['start_date']);
$toReturn[$key]['start_date'] = $start_date->format('m-d-Y');
$end_date = new DateTime($value['end_date']);
$toReturn[$key]['end_date'] = $end_date->format('m-d-Y');
}
注意:如果您希望使用按引用传递,不要忘记在循环之后取消设置($ value),这对于给定的示例不是必需的强>
答案 4 :(得分:1)
您还可以使用访问权限$toReturn[$index]
foreach ($toReturn as $index => $value) {
$start_date = new DateTime($value['start_date']);
$toReturn[$index]['start_date'] = $start_date->format('m-d-Y');
$end_date = new DateTime($value['end_date']);
$toReturn[$index]['end_date'] = $end_date->format('m-d-Y');
}