本文介绍如何在 php 中直接使用 simplexml 扩展高效解析 xml 字符串,无需转换为数组或 json,即可按需提取 `
` 元素的 `number`、`worked`、`active_hours` 和 `inactive_hours` 等关键字段,并自动处理缺失节点,默认补零。
在 PHP 中处理 XML 数据时,无需强行转成数组或 JSON——SimpleXML 对象本身已具备直观、可遍历的 DOM 式访问能力,且性能更优、代码更简洁。针对你提供的 XML 结构(根节点
$xml_string = <<1 77 1 1213 XML; // 加载 XML 字符串(注意错误抑制,生产环境建议启用错误报告) $xml = simplexml_load_string($xml_string); if ($xml === false) { throw new RuntimeException('Invalid XML string'); } $result = []; foreach ($xml->day as $day) { $dayNumber = (int) $day['number']; // 获取属性值,强制转 int // 使用空合并运算符(?:)安全读取子元素,缺失时返回 0 $result[$dayNumber] = [ 'worked' => (int) ($day->worked ?? 0), 'active_hours' => (int) ($day->active_hours ?? 0), 'inactive_hours'=> (int) ($day->inactive_hours ?? 0), ]; } print_r($result);
通过上述方式,你既能精准提取目标字段,又能保持代码简洁、健壮、可维护——这才是 PHP 解析 XML 的推荐路径。