bool型別(boolean 的縮寫)只有兩個值:true和false。
true和false這兩個字面值在程式碼中不分大小寫。
<?php
$value_is_true = true;
$value_is_false = false;
布林值經常在邏輯運算式中作為運算子的結果,然後用在控制結構裡。
邏輯運算子有以下幾種:
!$a:如果$a不是true,就回傳true
$a && $b:如果$a和$b都是true,就回傳true
$a || $b:如果$a或$b其中一個是true,就回傳true
另外還有and和or運算子,它們分別和&&、||互補。
它們的行為和&&、||不同,可能會產生非預期的結果,因此不建議使用。
在這份練習中,你將為朋友正在開發的一款新 RPG 遊戲實作任務邏輯。 遊戲的主角是 Annalyn,一個勇敢的女孩,帶著一隻凶猛又忠誠的寵物狗。 不幸的是,災難降臨了:她最好的朋友在森林裡尋找莓果時被綁架了。 Annalyn 會試著找到並救出她最好的朋友,這趟任務中她可以選擇帶不帶狗一起去。
循著好友的足跡走了一段時間後,她找到了囚禁她好友的營地。 原來綁匪有兩個人:一名強悍的騎士和一名狡猾的弓箭手。
找到綁匪後,Annalyn 開始思考自己能採取下列哪些行動:
你有四項任務:根據森林裡這三個角色的狀態,以及 Annalyn 的寵物狗在不在場,實作判斷上述行動是否可行的邏輯。
實作一個名為canFastAttack的函式,它接受一個布林值,表示騎士是否醒著。
如果根據該角色的狀態,「快速攻擊」行動可行,這個函式會回傳true。
否則回傳false:
<?php
$is_knight_awake = true;
$infiltration = new AnnalynsInfiltration();
$infiltration->canFastAttack($is_knight_awake);
// => false
實作一個名為canSpy的函式,它接受三個布林值,分別表示騎士、弓箭手和囚犯是否醒著。
如果根據這些角色的狀態,「刺探」行動可行,這個函式會回傳true。
否則回傳false:
<?php
$is_knight_awake = false;
$is_archer_awake = true;
$is_prisoner_awake = false;
$infiltration = new AnnalynsInfiltration();
$infiltration->canSpy($is_knight_awake, $is_archer_awake, $is_prisoner_awake);
// => true
實作一個名為canSignal的函式,它接受兩個布林值,分別表示弓箭手和囚犯是否醒著。
如果根據這些角色的狀態,「向囚犯打暗號」行動可行,這個函式會回傳true。
否則回傳false:
<?php
$is_archer_awake = false;
$is_prisoner_awake = true;
$infiltration = new AnnalynsInfiltration();
$infiltration->canSignal($is_archer_awake, $is_prisoner_awake);
// => true
實作一個名為canLiberate的函式,它接受四個布林值。
前三個參數分別表示騎士、弓箭手和囚犯是否醒著。
最後一個參數表示 Annalyn 的寵物狗是否在場。
如果根據這些角色的狀態以及 Annalyn 的寵物狗是否在場,「釋放囚犯」行動可行,這個函式會回傳true。
否則回傳false:
<?php
$is_knight_awake = false;
$is_archer_awake = true;
$is_prisoner_awake = false;
$is_dog_present = false;
$infiltration = new AnnalynsInfiltration();
$infiltration->canLiberate(
$is_knight_awake,
$is_archer_awake,
$is_prisoner_awake,
$is_dog_present
);
// => false