You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP中修改JSON数组日期为Y-m-d格式的问题求助

问题分析与解决

你的问题核心是没有将格式化后的日期值写回原数组——你在循环中只是生成了格式化后的日期变量,但原数组$contacts的内容完全没被修改,所以json_encode输出的自然还是原始的DateTime格式数据。

修正方案1:使用引用循环修改原数组

直接在foreach中使用引用变量,这样修改循环变量就会同步修改原数组的对应元素:

$contacts = $result['contacts']; // 注意给索引加引号,这是PHP的规范写法
// 使用&$contact引用原数组元素
foreach ($contacts as &$contact) {
    $time = new DateTime($contact['createdAt']);
    $contact['createdAt'] = $time->format('Y-m-d'); // 将格式化后的值存回原字段
}
unset($contact); // 解除引用,避免后续操作意外修改数组

$json = json_encode($contacts);
print_r($json);

修正方案2:通过数组索引修改

如果不想使用引用,也可以通过循环时的键名直接定位修改原数组:

$contacts = $result['contacts'];
foreach ($contacts as $key => $contact) {
    $time = new DateTime($contact['createdAt']);
    $contacts[$key]['createdAt'] = $time->format('Y-m-d'); // 用键名定位修改对应元素
}

$json = json_encode($contacts);
print_r($json);

这两种方法都会把createdAt字段替换成Y-m-d格式的字符串,之后执行json_encode就能得到你期望的结果了。

内容的提问来源于stack exchange,提问作者anono

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.06 14:17:31