如何从指定URL的JSON中提取符合条件的locationDateTime值?
解决方案
- 首先要明确,接口返回的
data.content.containers.container是数组结构(包含多条容器状态记录),需要遍历数组筛选符合条件的项 - 遍历过程中检查每条记录的
label是否等于Empty Equipment Returned,匹配成功后提取locationDateTime中的日期值
完整代码如下:
$url = 'https://elines.coscoshipping.com/ebtracking/public/containers/FCIU5238624'; $datax = file_get_contents($url); // 解码为关联数组,比对象更易操作 $x = json_decode($datax, true); // 先校验JSON结构合法性,避免报错 if (isset($x['data']['content']['containers']['container']) && is_array($x['data']['content']['containers']['container'])) { foreach ($x['data']['content']['containers']['container'] as $container) { // 匹配目标label if ($container['label'] === 'Empty Equipment Returned') { // 提取日期:如果是ISO8601格式(如2024-05-20T14:30:00),直接截取前10位 $date = substr($container['locationDateTime'], 0, 10); echo $date . PHP_EOL; // 若只需要第一个匹配项,可添加break终止循环 // break; } } } else { echo 'JSON结构异常或无有效数据'; }
补充说明
如果locationDateTime格式复杂,推荐用DateTime类解析,兼容性更强:
$dt = new DateTime($container['locationDateTime']); $date = $dt->format('Y-m-d');
内容的提问来源于stack exchange,提问作者Fizz Shan
相关产品推荐
相关产品推荐

