質問

$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);
$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マニュアルがある場合は、関数の説明を実行してください。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top