PHP配列の出力を数値だけのPHP変数に取得しようとしているので、それに対して算術演算を行ってから、ショッピングカートで使用するためにグローバルに保存できます。
配列を生成して操作するコードは次のとおりです。
<?php
function ups($dest_zip,$service,$weight,$length,$width,$height) {
$AccessLicenseNumber = 'XXXXXXXXXXXXX'; // Your license number
$UserId = 'XXXXXXXX'; // Username
$Password = 'XXXXXXXX'; // Password
$PostalCode = 'XXXXXX'; // Zipcode you are shipping FROM
$ShipperNumber = 'XXXXX'; // Your UPS shipper number
$data ="<?xml version=\"1.0\"?>
<AccessRequest xml:lang=\"en-US\">
<AccessLicenseNumber>$AccessLicenseNumber</AccessLicenseNumber>
<UserId>$UserId</UserId>
<Password>$Password</Password>
</AccessRequest>
<?xml version=\"1.0\"?>
<RatingServiceSelectionRequest xml:lang=\"en-US\">
<Request>
<TransactionReference>
<CustomerContext>Bare Bones Rate Request</CustomerContext>
<XpciVersion>1.0001</XpciVersion>
</TransactionReference>
<RequestAction>Rate</RequestAction>
<RequestOption>Rate</RequestOption>
</Request>
<PickupType>
<Code>01</Code>
</PickupType>
<Shipment>
<Shipper>
<Address>
<PostalCode>$PostalCode</PostalCode>
<CountryCode>US</CountryCode>
</Address>
<ShipperNumber>$ShipperNumber</ShipperNumber>
</Shipper>
<ShipTo>
<Address>
<PostalCode>$dest_zip</PostalCode>
<CountryCode>US</CountryCode>
<ResidentialAddressIndicator/>
</Address>
</ShipTo>
<ShipFrom>
<Address>
<PostalCode>$PostalCode</PostalCode>
<CountryCode>US</CountryCode>
</Address>
</ShipFrom>
<Service>
<Code>$service</Code>
</Service>
<Package>
<PackagingType>
<Code>02</Code>
</PackagingType>
<Dimensions>
<UnitOfMeasurement>
<Code>IN</Code>
</UnitOfMeasurement>
<Length>$length</Length>
<Width>$width</Width>
<Height>$height</Height>
</Dimensions>
<PackageWeight>
<UnitOfMeasurement>
<Code>LBS</Code>
</UnitOfMeasurement>
<Weight>$weight</Weight>
</PackageWeight>
</Package>
</Shipment>
</RatingServiceSelectionRequest>";
$ch = curl_init("https://www.ups.com/ups.app/xml/Rate");
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch,CURLOPT_POST,1);
curl_setopt($ch,CURLOPT_TIMEOUT, 60);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt ($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch,CURLOPT_POSTFIELDS,$data);
$result=curl_exec ($ch);
$upsout = (explode('USD', $result, 15));
$handling = $upsout[3];
echo "<br><br>Shipping: $";
echo $handling;
echo " USD<br><br>";
curl_close($ch);
var_dump( $handling);
// print_r ($upsout);}?>
$handling の出力は、常に 00.00 または 000.00 形式の数値であり、ゼロはもちろん数値です。算術関数で機能し、数値として使用するために格納できるようにするには、これが本当に必要です。
私はそれがうまくいかないことを知っています。
$test = $handling *2;
echo $test;
出力として「0」を取得しますが、$handling が何であれ、2 倍ではありません...
編集:
var_dump( htmlentities( $handling)); を実行すると
出力は次のとおりです。
文字列(222) "33.35"
var_dump( $handling); を実行すると
出力は
文字列(168) "33.35"
SO ....この配列エントリからがらくたを解析して、代数的に操作できるようにする方法を見つける必要があります。