-5

PHP 内で数学を使用するためのルールはありますか。簡単な計算をしようとすると、壁の数字から外れてしまいます。

具体的なスクリプトはこちら

            $profit = $quote_1 - $entry;

ここに完全なスクリプトのスニペットがあります

 if ($productCount > 0) {
        // get all the product details
        while($row = mysql_fetch_array($sql)){ 
            $id = $row["id"];
            $symbol = $row["symbol"];
            $sym = strtoupper($sym);
            $entry = $row["entry"];     
            $exit = $row["exit"];   
            $openclosed = $row["openclosed"];       
            $entrydate = $row["entrydate"];
            $profit = $quote_1 - $entry;
            $color = "#000000";
            $positive = "";
            if ($profit >= 0){
                                $color = "#00a900";
                                $positive = "+";
                             } 
            else if ($profit < 0){
                                $color = "#ef3600";
                                $positive = "";}
            if(empty($symbol)) {
                                echo nothing;
                               }
                else {
                    $open = fopen("http://quote.yahoo.com/d/quotes.csv?s=$symbol&f=sl1d1t1c1ohgv&e=.csv", "r");
                    $quote = fread($open, 1000);

                    fclose($open);

                    $quote = str_replace("\"", "", $quote);
                    $quote = explode(",", $quote);

                    $quote_0 = ($quote[0]);
                    $quote_1 = ((float)$quote[1]);
                    $quote_2 = ($quote[2]);
                    $quote_3 = ($quote[3]);
                    $quote_4 = ((float)$quote[4]);
                    $quote_5 = ((float)$quote[5]);
                    $quote_6 = ((float)$quote[6]);
                    $quote_7 = ((float)$quote[7]);
                    $quote_8 = ((float)$quote[8]);

                    echo "<ul><li><div class='wrapPicks'>
                  <div class='symbolPicks'>
                  <div class='quoteTitle'>$quote_0</div>
                  </div>
                  <div class='bgPicks'>
                  <div class='quote'>Entry Price: $$entry</div>
                  <div class='quote'>Last trade: $$quote_1</div>
                    <!--<div class='quote'>Date: $quote_2</div>-->
                    <div class='quote'>Open P/L: <div class='bigGreen'><span style=\"color: $color\">$positive $$profit </span></div></div>
                   <!-- <div class='quote'>Change From Previous Close: $$quote_4</div>-->
                    <!--<div class='quote'>High: $$quote_6</div>
                    <div class='quote'>Low: $$quote_7</div>
                   <div class='quote'>Volume: $quote_8</div>-->
                   </div>
                    </div></li></ul>";
            }

ここで私が考えたのは、yahoo のデータが文字列として入ってくる可能性があり、それが問題を引き起こしている可能性があるということでした。また、MYSQL テーブルが int でなければならないのか、それとも VARChAR が受け入れられるのかについても不明です。

4

1 に答える 1

1

ラインで

$open = fopen("http://quote.yahoo.com/d/quotes.csv?s=$symbol&f=sl1d1t1c1ohgv&e=.csv", "r");

クエリに文字列として残すのではなく、実際の記号に置き換える必要があります。多分このようなもの:

$open = fopen("http://quote.yahoo.com/d/quotes.csv?s=".$symbol."&f=sl1d1t1c1ohgv&e=.csv", "r");

シンボルを連結すると役立ちます。

無効なリクエストがある場合は、おそらくゴミを見ています。

また、計算を行う前にこのリクエストを行う必要があります。つまり、quote_1値を使用して利益を計算する前に計算する必要があります。

これは、私が話していることのとてつもなく単純化されたバージョンです。なぜこれがあなたがしたことと違うのか、そして「ここからあそこへ」戻る方法を理解しているかどうかを確認してください:

<?php
    $symbol = "GE";
    $entry = 23;
    $open = fopen("http://quote.yahoo.com/d/quotes.csv?s=".$symbol."&f=sl1d1t1c1ohgv&e=.csv", "r");
    $quote = fread($open, 1000);
    fclose($open);
    $quote = str_replace("\"", "", $quote);
    $quote = explode(",", $quote);
    $lastPrice = (float)$quote[1];
    $profit = $lastPrice - $entry;
    echo "current ".$symbol." quote: ".$lastPrice;
    echo "; entry: ".$entry."; profit: ".$profit;
?>

http://www.floris.us/SO/stocks.phpで実際にこれを見ることができます。私はそれをきれいにしようとはしませんでした - 数学を正しくするだけです. 今のところ出力は

current GE quote: 23.32; entry: 23; profit: 0.32

お役に立てば幸いです。

于 2013-07-08T19:56:12.050 に答える