使用xpath和php分组数据值

社会43

所以我的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

等等...

社会43

我能够使用此逻辑将它们分组。现在只需要添加数组中的距离值

 $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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章