PHP XML重复节点需要帮助对每个循环的值求和


PHP XML duplicate nodes need help summing up the values foreach loop

抱歉,PHP不是我的母语。

我有一个文件,它正在使用一个XML对象,并旋转它并设置值,以便它可以更新表。

文件已被更改,现在有两个节点具有相同的名称'pac'。

我有一个foreach循环,它将值设置为最终对象变量。并且我需要在其中添加另一个foreach循环(或者可能我不知道PHP人可能知道更好的方法来处理XML中被欺骗节点的增量和)。

PHP代码:

function parseSingleLineFile($singleFilePath,$bundlename)
{   
    $xmlobject = simplexml_load_file($singleFilePath);
    $finalObject;
    $finalObject->timestamp = $xmlobject->Info->Created;
    global $LAST_TIMESTAMP;
    if($finalObject->timestamp != 0) $LAST_TIMESTAMP = $finalObject->timestamp;
    foreach($xmlobject->MeanPublic as $logItem)
    {
        $psplit = split(":",$logItem->Key);
        $parametername = strtolower($psplit[sizeof($psplit)-1]);
        switch($parametername)
        {
            case "exlbnmb":
                $finalObject->exlsolirr = $logItem->Mean;
                break;
            case "solacp":
                $finalObject->intsolirr = $logItem->Mean;
                break;
            case "smaa":
                $finalObject->sma_h_on = $logItem->Mean;
                break;
            case "pac": /* here is the problem spot (there are now two of these...*/
                $finalObject->pac = $logItem->Mean;
                break;
        }
    }
}

我需要添加两个平均值并设置为finalObject pac键变量:

这是我最好的尝试,但我不能在生产中测试它,我不能在产品系统之外重新创建它,所以我所以我不确定我的轨道是正确的。我不想在文件工作的这一点上冒险破坏它。

我对每个节点的平均值的最佳猜测:

case "pac":
$pacbuilder ='0';
foreach($parametername = pac) {
    $pacbuilder += $logItem->Mean;
}
$finalObject->pac = $pacbuilder;
break;      

我还想注意,它正在抓取最后一个pac值,并跳过第一个实例/节点。

finalObject是用来填充表的…

if($totalRows_checkForLine == 0)
{
    $query_insertLine = sprintf("INSERT INTO mean_data_table SET 
                                d_exlsolirr = '%s',
                                d_intsolirr = '%s',
                                d_sma_h_on = '%s',
                                d_pac = '%s'
                                ", 
                                $finalObject->exlsolirr,
                                $finalObject->intsolirr,
                                $finalObject->sma_h_on,
                                $finalObject->pac);
    $insertLine = mysql_query($query_insertLine) or die(mysql_error()); 
}

提问者想要"pac">= 2出现时节点值的总和,并添加/to增量为"$finalObject->pac",如下所示:

switch($parametername) {
   //....
    case "pac":        
        $finalObject->pac = (float)$finalObject->pac + (float)$logItem->Mean;
        break;
}