2011-07-02 29 views
0

私は次のコードを持っています。私はPHPでブーリアンに問題があるようです。なぜなら、bCreatedEventの値をダンプすると、それはちょうど空です。何が間違っていて、私はブーリアンを間違って使用していますか?私のロジックチェックにも失敗して、私は一番下にリダイレクトすることができます。私はかなりPHPに新しいですが、これのほとんどはc/c + +に似て動作するはずだと思った。PHPブールは正しく動作していませんか?

$dbTheatreCMS = new TheatreCMSDB(); 
       $iEventID = $dbTheatreCMS->InsertNewEvent($sTitle, $sCompany, $iCreateID, $sNotes, $sPrePrice, $sRegPrice); 

       $bEventCreated = False; 
       echo "bEventCreated1 = " . $bEventCreated . "<br/>"; 
       $bEventInfoInserted = True; 
       $bEventRolesInserted = True; 

       if ($iEventID > 0) 
       { 
        $bEventCreated = true; 
        if (isset($_POST["Venues"], $_POST["EventDates"])) 
        { 
         $aiVenueIDs = $_POST["Venues"]; 
         $adtEvents = $_POST["EventDates"]; 
         if (count($adtEvents) == count($aiVenueIDs)) // These should be the same length 
         { 
          for ($i = 0; $i < count($adtEvents); $i++) 
          { 
           $bEventInfoInserted &= ($dbTheatreCMS->InsertNewEventInfo($iEventID, $aiVenueIDs[$i],$adtEvents[$i]) > 0) ? true :false; 
          } 
         } 
        } 

        if (isset($_POST["Troupers"], $_POST["Roles"])) 
        { 
         $trouperIDs = $_POST["Troupers"]; 
         $roles = $_POST["Roles"]; 
         if (count($trouperIDs) == count($roles)) 
         { 
          for ($i = 0; $i < count($trouperIDs); $i++) 
          { 
           $bEventInfoInserted &= ($dbTheatreCMS->InsertNewTroupeInfo($iEventID, $trouperIDs[$i],$roles[$i]) > 0)? true:false; 
          } 
         } 
        } 
       } 

       echo "bEventCreated = " . $bEventCreated . "<br/>"; 
       echo "bEventInfoInserted = " . $bEventInfoInserted . "<br/>"; 
       echo "bEventRolesInserted = " . $bEventRolesInserted . "<br/>"; 

       $bEventCreated = $bEventCreated & $bEventInfoInserted & $bEventRolesInserted; 
       echo "$bEventCreated = " . $bEventCreated . "<br/>"; 

       if($bEventCreated == True) 
       { 
        echo "<script type='text/javascript'>window.localStorage.href = 'some page.php';</script>"; 
       } 

出力

bEventCreated1 = 
bEventCreated = 
bEventInfoInserted = 1 
bEventRolesInserted = 1 
0 = 0 
+0

1.私はあなたのコードで 'bCreatedEvent'を見ていませんか? 2.変数がfalseの場合、 '0'を出力するのではなく、ブランク(trueの場合は' 1')を出力します。 –

+1

'echo'は実際の変数の内容(特に' false 'を持つブール変数)を反映しないかもしれません、 'var_dump()'を使って内容と変数の型を見てください。 –

+0

これの出力は何ですか:: var_dump($ bEventCreated) – Pheonix

答えて

1

falseが空の使用にvar_dump($bEventCreated)

また

&になりますエコーは、私が考えるビット演算子はあなたがいつも使っていることを確認し&&

$bEventCreated = $bEventCreated & $bEventInfoInserted & $bEventRolesInserted; 
0

値はfalse、それはなりませんechoprint値である場合。例えば参照:

<?php 

$true = true; 
$false = false; 

echo $true."\n"; 
echo $false."\n"; 

var_dump($true)."\n"; 
var_dump($false); 

?> 

http://codepad.org/98bR4bfn

0

を意味していますbooleaを実行しているときに、同一または同一ではない比較演算子n個の条件:

if($bEventCreated === TRUE)

+0

はい。実際には、データ型とデータ値を比較するので、型安全===と!==の比較演算子は常に使用することをお勧めします。 – SteAp

0

あなたはそれが最初の文字列に変換されている変数をエコーするとき。

FALSEまたはNULLを文字列に変換すると、空の文字列 ""に変換されます。 TRUEは "1"に変換されます。配列は「配列」に変換されます。リソースは現在「リソース#N」のように変換されていますが、未定義です。 __toString()を実装していなければ、オブジェクトはエラーをスローします。

関連する問題