抱歉,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;
}