質問
$bal = (int)$balance;
echo is_int($bal);
$残高はfile_get_contents($ webservice)からのものです。
文字列を整数に変換するために(int)を使用しています。 IS_INTは、検証としてtrueに対して1を返します。
$ balの値は常に負であるため、次の計算を行い、正の計算を行います。
$bal = $bal * -1;
私がこれを行うと、$ balが以前に-150である場合でも、値は0になります。
編集1var_dump($ balance)returning:string(110) "-399.6000"
編集2 XMLパーサーを使用して配列に変数を割り当てました - 以下の回答を参照してください。
解決 3
問題は、WebサービスのGETメソッドと対話するためにfile_get_contentsを使用していたことです。
これは、変数に割り当てるときに見落としていたXMLヘッダーデータを返しました。
XMLをクリアして、私が望む値だけを残すために、file_get_contentsを配列に保存し、配列値を整数に割り当てることができるphp xml_parserを使用しました。
$result = file_get_contents($base);
$p = xml_parser_create();
xml_parse_into_struct($p, $result, $vals, $index);
xml_parser_free($p);
$bal = $vals[0]['value'];
echo $bal *-1;
他のヒント
PHPをお勧めします abs()
-働き 常にポジティブな数を扱っていることを確認したい場合:
$bal = abs($bal);
あなたのように var_dump
出力、文字列はスペースから始まります。これを使って:
$bal = intval(trim($balance));
サインを元に戻したい場合は、これを試してください。
$bal = $bal * (-1);
または使用します abs() あなたがそれを常にポジティブにしたいなら:
$bal = abs($bal);
$bal = abs($bal);
$balance="-150";
$bal = $balance*1;
echo $bal;
-150を与えます
あなたが乗算した後、あなたのプログラムは$ balで何をしていますか?次のPHPスクリプトは、私のラップトップで期待どおりに機能しました。
<?php
$balance = "-150";
$bal = (int)$balance;
echo is_int($bal);
$bal = $bal * -1;
echo $bal;
?>
ラインブレイクを気にしなかったため、出力は「1150」です。コードをこれ以上投稿できますか
任意の変数の整数値を返す関数intval()を使用して、計算を簡単にすることができると思います。 PHPマニュアルがある場合は、関数の説明を実行してください。