php
  • if-statement
  • 2017-07-04 18 views 1 likes 
    1

    次のPHP if条件文が正しく処理されておらず、動作していません。
    ファイル$ fnameがテキスト値を持っている:「990,1000」を間にコンマで:文が常にmyArray[0] >= myArray[1]として真の値をとり、を表示した場合、私はPHPファイルに上記を実行すると条件が正しく動作していない場合

    $myfile = fopen($fname, "r") or die("<script 
    type='text/javascript'>window.location.href = 
    'http://www.autorekrooter.com/activation.html';</script>"); 
    $dt=fread($myfile,filesize($fname)); 
    //File fname has values: "990, 1000" 
    fclose($myfile); 
    $myArray = explode(',', $dt); 
    //Now checking if Limit expired or not? 
    echo "<br>myArray[0] values is: " . $myArray[0] . " myArray[1] value is: " . 
    $myArray[1]; 
    if ($myArray[0]>=$myArray[1]){ 
    echo "<script>alert('You can't proceed further');</script>";  
    //echo "<script type='text/javascript'>window.location.href = 'register.html';</script>"; 
    exit(); 
    } 
    else{ 
    echo "<script type='text/javascript'>window.location.href = 
    'gui.php';</script>"; 
    echo "You can proceed"; 
    exit(); 
    } 
    

    reigster.htmlの場合、$fnameファイルでは990,1000 myArray[0]=990myArray[1]=1000なのでmyArray[0]myArray[1]より大きくてはならず、else文は実行する必要がありますが、逆のことが起こっています。

    これはなぜ機能していないのですか?
    多くのご回答ありがとうございます。

    +0

    ファイルから$ dt – Grumpy

    +0

    $ dt = "990,1000"の内容を表示できますか?コメントで与えられた@Grumpy –

    +0

    $ myArray [0]と$ myArray [1]をintに変換し、$ firstval =(int)$ myArray [0]のようにチェックします。 $ secondval =(int)$ myArray [1]そして$ firstvalと$ secondvalを比較します –

    答えて

    0

    試してみてください。
    は、それはあなたのために動作します。この

    if (intval($myArray[0])>=intval($myArray[1])){ 
        echo "<script>alert('You can't proceed further');</script>";  
    //echo "<script type='text/javascript'>window.location.href = 'register.html';</script>"; 
    exit(); 
    } 
    else{ 
    echo "<script type='text/javascript'>window.location.href = 
    'gui.php';</script>"; 
    echo "You can proceed"; 
    exit(); 
    } 
    

    私の事を試してみてください。

    +0

    はい、タイプキャストのコードが私のために働いていました。私は答えとしてこれを受け入れるでしょう。 –

    2

    ファイルの最後に改行(\nまたは\r\n)がある可能性があります($myfile)。だからmyArray[1]は実際には"1000\n"のように見えます。

    var_dump("990" >= "1000\n");は、bool(true)を返します。

    PHPが数値に変換できない文字列を比較しているので、予期しない結果が得られます。あなたが唯一の整数値を取得するためにINTVALを使用することができます f ((int)$myArray[0]>=(int)$myArray[1]){

    +0

    PHPスクリプトからの出力:DT変数の値:990,1000 –

    +0

    行の最後で\ r \ nを削除するにはどうしたらいいですか?任意の提案.. @timclutton –

    +0

    2番目の値の後に追加すると、内容は990,1000になります。 – Grumpy

    1

    はこの1

    $myArray = array_map('intval', explode(',', $dt)); 
    
    1

    関連する問題