如果XML标记值与PHP中相同XML中的另一个标记的值匹配,则将其乘以

问题描述 投票:0回答:1

我一直在阅读如果XML标记值与同一XML中另一个标记的值相匹配,如何将其加倍,我举一个例子:

我有一个带有这个值的XML:

<?xml version="1.0" encoding="utf-8"?>
<products>
  <item>
    <name>PRODUCT 1</name>
    <brand>BRAND 1</brand>
    <currency>CURRENCY 1</currency>
    <price>10</price>
  </item>
  <item>
    <name>PRODUCT 2</name>
    <brand>BRAND 2</brand>
    <currency>CURRENCY 1</currency>
    <price>5</price>
  </item>
  <item>
    <name>PRODUCT 3</name>
    <brand>BRAND 3</brand>
    <currency>CURRENCY 2</currency>
    <price>1</price>
  </item>
  <item>
    <name>PRODUCT 4</name>
    <brand>BRAND 4</brand>
    <currency>CURRENCY 2</currency>
    <price>2</price>
  </item>
  <item>
    <name>PRODUCT 5</name>
    <brand>BRAND 5</brand>
    <currency>CURRENCY 2</currency>
    <price>5</price>
  </item>
</products>

如果它们与<price>标记中的CURRENCY 2匹配,我需要将<currency>标记中的值乘以10,得到类似于此的结果:

<?xml version="1.0" encoding="utf-8"?>
<products>
  <item>
    <name>PRODUCT 1</name>
    <brand>BRAND 1</brand>
    <currency>CURRENCY 1</currency>
    <price>10</price>
  </item>
  <item>
    <name>PRODUCT 2</name>
    <brand>BRAND 2</brand>
    <currency>CURRENCY 1</currency>
    <price>5</price>
  </item>
  <item>
    <name>PRODUCT 3</name>
    <brand>BRAND 3</brand>
    <currency>CURRENCY 2</currency>
    <price>10</price><!--- Have been multiplied by 10 because matched "CURRENCY 2" on the "<currecy>" tag -->
  </item>
  <item>
    <name>PRODUCT 4</name>
    <brand>BRAND 4</brand>
    <currency>CURRENCY 2</currency>
    <price>20</price><!--- Have been multiplied by 10... -->
  </item>
  <item>
    <name>PRODUCT 5</name>
    <brand>BRAND 5</brand>
    <currency>CURRENCY 2</currency>
    <price>50</price><!--- Have been multiplied by 10... -->
  </item>
</products>

我写了这段代码,但它不起作用,我不太清楚为什么,任何帮助都将非常感激。

<?php
$sXML = simplexml_load_file('file.xml', null, LIBXML_NOBLANKS);
$currency = $sXML->xpath("//item[currency='CURRENCY 2']");
foreach ( $currency as $value )    {
    $value = $value * 10;
}
unset($value);

$domDocument = dom_import_simplexml($sXML)->ownerDocument;
$domDocument->formatOutput = true;
echo $domDocument->save('new.xml');
?>
php xml dom simplexml
1个回答
0
投票

感谢salathe使用这种语法qazxsw poi发生了魔法

$value->price = $value->price * 10
© www.soinside.com 2019 - 2024. All rights reserved.