Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在XML文件中计算多个价格,并在WP All import中仅导入一个_Php_Xml_Wordpress_Woocommerce - Fatal编程技术网

Php 在XML文件中计算多个价格,并在WP All import中仅导入一个

Php 在XML文件中计算多个价格,并在WP All import中仅导入一个,php,xml,wordpress,woocommerce,Php,Xml,Wordpress,Woocommerce,我在包含大约10k个产品的XML文件中遇到了问题,我想用WP All import将它们导入Woocmerse。价格有一个节点,即 <price>92.50</price> 但它不起作用,只给我看产品的原价,92.50欧元,请帮忙 正如@Nigel Ren在评论中所建议的,在这些情况下,xpath是一种方法 大致如下: $prods = "<units>" . "<unit><price>

我在包含大约10k个产品的XML文件中遇到了问题,我想用WP All import将它们导入Woocmerse。价格有一个节点,即

 <price>92.50</price>

但它不起作用,只给我看产品的原价,92.50欧元,请帮忙

正如@Nigel Ren在评论中所建议的,在这些情况下,xpath是一种方法

大致如下:

$prods = "<units>"
        . "<unit><price>10.00</price><currency>EUR</currency></unit>"
        . "<unit><price>20.00</price><currency>BGN</currency></unit>"
        . "<unit><price>30.00</price><currency>USD</currency></unit>"
        . "</units>";
$prod_xml = simplexml_load_string($prods);
$prod_dat = $prod_xml->xpath('//unit');

function rate_price($price, $cur) {
    if ($cur == "USD") {
        return $price * 3;
    } else if ($cur == "EUR") {
        return $price * 2;
    } else {
        return $price * 1;
    }
}

foreach ($prod_dat as $datum) {
    $unit_price = $datum->xpath('.//price')[0];
    $unit_cur = $datum->xpath('.//currency')[0];
    $final_price = rate_price($unit_price, $unit_cur);
    echo "Unit Currency: " . $unit_cur . " Orig unit price: " . $unit_price . " BGN price: " . $final_price;
    echo "</br>";
}

您可以使用XPath查找正确的货币项目以及价格。试一试,如果您仍然有问题,可以创建一个关于XML代码段的问题,以及您在这方面遇到的问题。
<?php
 $currency = array( "EUR", "USD", "BGN" ); 
function rate_price( $price = null, $multiplier_eur = 2, $multiplier_usd = 1 ) {
if ( $currency[0] ) {
// strip any extra characters from price
return $price * $multiplier_eur;
} else if ( $currency[1] ) {
    return $price * $multiplier_usd;
} else {
    return $price;
}
}
?>
[rate_price({price[1]},"1.9583","1.762")]
$prods = "<units>"
        . "<unit><price>10.00</price><currency>EUR</currency></unit>"
        . "<unit><price>20.00</price><currency>BGN</currency></unit>"
        . "<unit><price>30.00</price><currency>USD</currency></unit>"
        . "</units>";
$prod_xml = simplexml_load_string($prods);
$prod_dat = $prod_xml->xpath('//unit');

function rate_price($price, $cur) {
    if ($cur == "USD") {
        return $price * 3;
    } else if ($cur == "EUR") {
        return $price * 2;
    } else {
        return $price * 1;
    }
}

foreach ($prod_dat as $datum) {
    $unit_price = $datum->xpath('.//price')[0];
    $unit_cur = $datum->xpath('.//currency')[0];
    $final_price = rate_price($unit_price, $unit_cur);
    echo "Unit Currency: " . $unit_cur . " Orig unit price: " . $unit_price . " BGN price: " . $final_price;
    echo "</br>";
}
Unit Currency: EUR Orig unit price: 10.00 BGN price: 20
Unit Currency: BGN Orig unit price: 20.00 BGN price: 20
Unit Currency: USD Orig unit price: 30.00 BGN price: 90