所以我的XML文档看起来像这样:
<output>
<workouts>
<workout>
<workout_date>
<![CDATA[ 2014-04-05 ]]>
</workout_date>
<distance>
<![CDATA[ 15 ]]>
</distance>
</workout>
<workout>
<workout_date>
<![CDATA[ 2014-04-08 ]]>
</workout_date>
<distance>
<![CDATA[ 2 ]]>
</distance>
</workout>
<workout>
<workout_date>
<![CDATA[ 2014-03-28 ]]>
</workout_date>
<distance>
<![CDATA[ 3.3 ]]>
</distance>
</workout>
</workouts>
</output>
现在,我正在使用XPath和PHP输出日期,如下所示:
$typesListXml = $xml->xpath('output/workouts/workout/workout_date');
if (!empty($typesListXml)) {
$typesList = array();
foreach ($typesListXml as $typeXml) {
// using strtotime to output the month only (commented out below)
//$typesList[] = date('F', strtotime((string)$typeXml));
$typesList[] = (string)$typeXml;
}
//var_dump($typesList);
$typesList = array_unique($typesList);
var_dump($typesList);
这将仅输出唯一值,因此我不会每个月重复一次,但是,我无法输出"distance"
每个月所有值的总和。因此,基本上,最终结果将如下所示:
结果:
四月
总距离= 17
行进
总距离= 3.3
等等...
我能够使用此逻辑将它们分组。现在只需要添加数组中的距离值
$distanceforDate = array();
foreach ($typesList as $type) {
$Data = $xml->xpath('output/workouts/workout[workout_date="' . $type . '"]');
$M = date('F', strtotime($type));
if (!empty($Data)) {
foreach ($Data as $rawData) {
//print_r ($M);
$distanceforDate[$M][] = '' . $rawData->distance;
}
}
}
print_r($distanceforDate);
echo array_sum($distanceforDate);
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句