2011-07-02 88 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'而是一個空白(真實的'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時使用相同或不相同的比較操作符氮條件:

if($bEventCreated === TRUE)

+0

是的。事實上,總是使用類型安全的===和!==比較運算符是很好的,因爲它們比較數據類型和數據值。 – SteAp

0

當您回聲的變量,先把它轉化爲字符串。

當FALSE或NULL轉換爲字符串時,它們將轉換爲空字符串「」。 TRUE被轉換爲「1」。數組轉換爲「Array」。資源未定義,儘管它們當前被轉換爲「資源#N」。如果對象沒有實現__toString(),則會引發錯誤。