Các biến Boolean trong php thông tin chung. Lựa chọn mặc định

Cập nhật cuối cùng: 1.11.2015

Trong PHP chúng ta có thể sử dụng các nhà khai thác khác nhau: số học, logic, v.v. Chúng ta hãy xem xét từng loại hoạt động.

Các phép tính toán học

    + (thao tác cộng)

    Ví dụ: $a + 5

    - (thao tác trừ)

    Ví dụ: $a - 5

    * (phép nhân)

    Ví dụ: $a * 5

    / (phân công)

    Ví dụ: $a / 5

    % (lấy phần dư của phép chia)

    Ví dụ: $a=12; tiếng vang $a % 5; // bằng 2

    ++ (tăng/tăng giá trị lên một)

    Ví dụ: ++$a

    Điều quan trọng là phải hiểu sự khác biệt giữa các biểu thức ++$a và $a++ . Ví dụ:

    $a=12; $b=++$a; // $b bằng 13 echo $b;

    Ở đây, đầu tiên, một giá trị được thêm vào giá trị của biến $a, sau đó giá trị của nó tương đương với biến $b. Sẽ khác nếu biểu thức trông như thế này: $b=$a++; . Ở đây, đầu tiên giá trị của biến $a bằng biến $b, sau đó giá trị của biến $a được tăng lên.

    -- (giảm/giảm giá trị một đơn vị)

    Ví dụ: --$a . Ngoài ra, như trong trường hợp tăng dần, có hai loại ghi: --$a và $a--

Toán tử gán

    Đánh đồng một biến với một giá trị cụ thể: $a = 5

    Phép cộng theo sau là phép gán kết quả. Ví dụ: $a=12; $a += 5; tiếng vang $a; // bằng 17

    Phép trừ sau đó là phép gán kết quả. Ví dụ: $a=12; $a -= 5; tiếng vang $a; // bằng 7

    Phép nhân theo sau là phép gán kết quả: $a=12; $a *= 5; tiếng vang $a; // bằng 60

    Phép chia theo sau là phép gán kết quả: $a=12; $a /= 5; tiếng vang $a; // bằng 2,4

    Nối các hàng và gán kết quả. Áp dụng cho hai dòng Nếu các biến không lưu trữ chuỗi, nhưng, chẳng hạn như số, thì giá trị của chúng được chuyển đổi thành chuỗi và sau đó thao tác được thực hiện: $a=12; $a .= 5; tiếng vang $a; // bằng 125 // giống $b="12"; $b .="5"; // bằng 125

    Lấy phần dư của phép chia rồi gán kết quả: $a=12; $a %= 5; tiếng vang $a; // bằng 2

Hoạt động so sánh

Các phép toán so sánh thường được sử dụng trong các cấu trúc có điều kiện khi cần so sánh hai giá trị và tùy thuộc vào kết quả so sánh mà thực hiện một số hành động nhất định. Có sẵn hoạt động sau đây so sánh.

    Toán tử đẳng thức so sánh hai giá trị và nếu chúng bằng nhau, trả về true, nếu không trả về false: $a == 5

    Toán tử nhận dạng cũng so sánh hai giá trị và nếu chúng bằng nhau, trả về true, nếu không trả về false: $a === 5

    So sánh hai giá trị và nếu chúng không bằng nhau, trả về true, nếu không trả về false: $a != 5

    So sánh hai giá trị và nếu chúng không bằng nhau, trả về true, nếu không trả về false: $a !== 5

    So sánh hai giá trị và nếu giá trị đầu tiên lớn hơn giá trị thứ hai thì trả về true, nếu không thì trả về false: $a > 5

    So sánh hai giá trị và nếu giá trị đầu tiên nhỏ hơn giá trị thứ hai thì trả về true, nếu không thì trả về false: $a< 5

    So sánh hai giá trị và nếu giá trị đầu tiên lớn hơn hoặc bằng giá trị thứ hai thì trả về true, nếu không thì trả về false: $a >= 5

    So sánh hai giá trị và nếu giá trị đầu tiên nhỏ hơn hoặc bằng giá trị thứ hai thì trả về true, nếu không thì trả về false: $a<= 5

Toán tử bình đẳng và nhận dạng

Cả hai toán tử đều so sánh hai biểu thức và trả về true nếu các biểu thức bằng nhau. Nhưng có sự khác biệt giữa chúng. Nếu phép toán đẳng thức lấy hai giá trị thuộc các loại khác nhau thì chúng sẽ được giảm xuống một - giá trị mà trình thông dịch thấy là tối ưu. Ví dụ:

Rõ ràng, các biến lưu trữ các giá trị khác nhau thuộc các loại khác nhau. Nhưng khi so sánh, chúng sẽ được quy giản về cùng loại - số. Và biến $a sẽ được rút gọn về số 22. Và cuối cùng, cả hai biến sẽ bằng nhau.

Hoặc, ví dụ, các biến sau cũng sẽ bằng nhau:

$a = sai; $b = 0;

Để tránh những tình huống như vậy, phép toán tương đương được sử dụng, không chỉ tính đến giá trị mà còn tính đến loại biến:

$a = "22a"; $b = 22; if($a===$b) echo "bằng"; tiếng vang khác "không bằng";

Bây giờ các biến sẽ không bằng nhau.

Các toán tử bất đẳng thức != và !== hoạt động tương tự.

Các phép toán logic

Các phép toán logic thường được sử dụng để kết hợp kết quả của hai phép toán so sánh. Ví dụ: chúng ta cần thực hiện một hành động nhất định nếu một số điều kiện là đúng. Có sẵn các phép toán logic sau:

    Trả về true nếu cả hai phép so sánh đều trả về true, nếu không thì trả về false: $a == 5 && $b = 6

    Tương tự như thao tác &&: $a == 5 và $b > 6

    Trả về true nếu ít nhất một phép toán so sánh trả về true, nếu không thì trả về false: $a == 5 || $b = 6

    Tương tự như thao tác || : $a< 5 or $b > 6

    Trả về true nếu phép so sánh trả về false: !($a >= 5)

    Trả về true nếu chỉ một trong các giá trị là true. Nếu cả hai đều đúng hoặc không đúng thì trả về sai. Ví dụ: $a=12; $b=6; if($a xor $b) echo "true"; nếu không thì echo "false";

    Ở đây kết quả của phép toán logic sẽ sai vì cả hai biến đều có một giá trị cụ thể. Hãy thay đổi mã:

    $a=12; $b=NULL; if($a xor $b) echo "true"; nếu không thì echo "false";

    Ở đây kết quả sẽ đúng vì giá trị của một biến không được đặt. Nếu một biến có giá trị NULL thì trong các phép toán logic, giá trị của nó sẽ được coi là sai

Hoạt động bit

Hoạt động bit được thực hiện trên các bit riêng lẻ của một số. Các số được xem xét trong biểu diễn nhị phân, ví dụ số 2 trong biểu diễn nhị phân là 010, số 7 là 111.

    & (phép nhân logic)

    Phép nhân được thực hiện theo bit và nếu cả hai toán hạng có giá trị bit bằng 1 thì phép toán trả về 1, nếu không thì trả về số 0. Ví dụ: $a1 = 4; //100 $b1 = 5; //101 echo $a1 & $b1; // bằng 4

    Ở đây số 4 trong hệ nhị phân là 100 và số 5 là 101. Nhân các số từng bit một và nhận được (1*1, 0*0, 0 *1) = 100, tức là số 4 ở dạng thập phân định dạng.

    | (phép cộng logic)

    Tương tự như phép nhân logic, phép toán cũng được thực hiện trên các chữ số nhị phân, nhưng bây giờ sẽ trả về một số nếu ít nhất một số trong một chữ số nhất định có một số một. Ví dụ: $a1 = 4; //100 $b1 = 5; //101 tiếng vang $a1 | $b1; // bằng 5

    ~ (phủ định logic)

    đảo ngược tất cả các bit: nếu giá trị bit là 1 thì nó trở thành 0 và ngược lại. $b = 5; tiếng vang ~$b;

    x<

    x>>y - dịch chuyển số x sang phải theo y chữ số. Ví dụ: 16>>1 dịch 16 (là 10000 ở dạng nhị phân) sang phải một vị trí, dẫn đến 1000 hoặc 8 ở dạng thập phân

Nối chuỗi

Toán tử dấu chấm được sử dụng để nối chuỗi. Ví dụ: hãy kết nối một số dòng:

$a="Xin chào,"; $b=" thế giới"; tiếng vang $a . $b . "!";

Nếu các biến đại diện cho các loại khác ngoài chuỗi, chẳng hạn như số, thì giá trị của chúng được chuyển đổi thành chuỗi và sau đó thao tác nối chuỗi cũng xảy ra.

PHP hỗ trợ các toán tử logic tiêu chuẩn AND và && , OR và || , ! (không) và XOR . Toán tử logic cho phép bạn so sánh kết quả của hai toán hạng (một giá trị hoặc một biểu thức) để xác định xem một hoặc cả hai toán hạng trả về đúng hay sai và chọn có tiếp tục thực thi tập lệnh tương ứng hay không dựa trên giá trị được trả về. Giống như các toán tử so sánh, các toán tử logic trả về một giá trị Boolean duy nhất - đúng hoặc sai, tùy thuộc vào các giá trị ở hai bên của toán tử.

Logic HOẶC (HOẶC và ||)

Toán tử logic OR được ký hiệu là OR hoặc || . Nó thực hiện phép toán OR logic trên hai toán hạng. Nếu một hoặc cả hai toán hạng đều đúng thì kết quả trả về là true. Nếu cả hai toán hạng đều sai, nó sẽ trả về sai. Chắc hẳn bạn có thắc mắc: tại sao họ lại tạo ra hai phiên bản của một toán tử? Ý nghĩa của hai các lựa chọn khác nhau Toán tử OR logic là chúng hoạt động với các mức độ ưu tiên khác nhau.

Đầu tiên, hãy xem toán tử || hoạt động như thế nào. . Và vì vậy, nếu một hoặc cả hai toán hạng của nó đều đúng, nó sẽ trả về true . Nếu cả hai toán hạng đều trả về giá trị false thì nó sẽ trả về false.

Toán tử OR hoạt động giống như toán tử ||. với một ngoại lệ, nếu toán tử OR được sử dụng trong một phép gán, trước tiên nó sẽ đánh giá và trả về giá trị của toán hạng bên trái, nếu không thì nó hoạt động giống hệt như toán tử ||. , I E. nếu một hoặc cả hai toán hạng của nó đều đúng thì nó trả về true . Nếu cả hai toán hạng đều trả về false thì nó sẽ trả về false.

Để làm rõ hơn cách chúng hoạt động, hãy đưa ra ví dụ sau:

1 // Đầu tiên biến được gán giá trị false, sau đó toán hạng thứ hai được đánh giá // Hành động ưu tiên: ($var2 = false) hoặc true $var2 = false hoặc true; tiếng vang $var2; // false không được in // ($var3 = 0) hoặc 3 $var3 = 0 hoặc 3; tiếng vang "
$var3"; // => 0 ?>

Bất kỳ toán tử so sánh và logic nào cũng có thể được kết hợp thành các cấu trúc phức tạp hơn:

Một điều nữa đáng nói tâm điểm, liên quan đến cả OR và || . Toán tử logic OR bắt đầu đánh giá bằng toán hạng bên trái; nếu nó trả về true thì toán hạng bên phải sẽ không được đánh giá. Điều này giúp tiết kiệm thời gian thực thi, nhưng bạn phải cẩn thận để đảm bảo rằng mã có thể phụ thuộc vào làm việc đúng chương trình không được đặt vào toán hạng bên phải.

Logic VÀ (VÀ và &&)

Toán tử logic AND được ký hiệu là AND hoặc && . Nó thực hiện phép toán logic AND trên hai toán hạng. Nó trả về true khi và chỉ khi cả hai toán hạng đều có giá trị true. Nếu một hoặc cả hai toán hạng trả về false thì toán tử sẽ trả về false. Ý nghĩa của hai phiên bản khác nhau của toán tử “logic AND” giống như hai toán tử trước đó, cụ thể là chúng hoạt động với các mức độ ưu tiên khác nhau.

Đầu tiên, hãy xem toán tử && hoạt động như thế nào. Và vì vậy, nếu cả hai toán hạng của nó đều đúng, nó sẽ trả về true . Nếu ít nhất một hoặc cả hai toán hạng của nó trả về false thì nó cũng sẽ trả về false.

Toán tử AND hoạt động giống như toán tử && ngoại trừ một ngoại lệ, nếu toán tử AND được sử dụng với một phép gán, trước tiên nó sẽ đánh giá và trả về giá trị của toán hạng bên trái, nếu không thì nó hoạt động giống hệt như toán tử &&. Nếu ít nhất một trong các toán hạng của nó trả về sai thì nó cũng sẽ trả về sai và nếu cả hai toán hạng đều trả về sai thì nó sẽ trả về sai.

Để hiểu, bây giờ chúng ta hãy xem cách thức hoạt động của nó trong thực tế:

$bar3"; // => 9 ?>

HOẶC độc quyền (XOR)

Toán tử OR độc quyền được ký hiệu là XOR. Nó trả về true nếu một và chỉ một trong các toán hạng của nó là đúng. Nếu cả hai toán hạng đều đúng thì toán tử sẽ trả về sai.

Bởi vì toán tử XOR có cùng mức ưu tiên với toán tử AND và OR (thấp hơn toán tử gán) và được sử dụng trong biểu thức gán nên trước tiên nó sẽ đánh giá và trả về giá trị của toán hạng bên trái.

6 $a1 = 19 xor 5 > 6; var_dump($a1); // => 19 var_dump(true xor true); // sai var_dump((2< 3) xor (5 != 5)); // true ?>

Hợp lý KHÔNG (!)

Toán tử logic NOT, còn được gọi là phủ định, được biểu thị bằng dấu! . Anh ấy là toán tử đơn nguyên, được đặt trước một toán hạng. Toán tử logic NOT được sử dụng để đảo ngược giá trị logic của toán hạng và luôn trả về true hoặc false.

Nếu bạn cần đảo ngược giá trị của một biểu thức, chẳng hạn như a && b , bạn sẽ cần sử dụng dấu ngoặc tròn: !(a && b) . Ngoài ra với sự giúp đỡ của một nhà điều hành! Bạn có thể chuyển đổi bất kỳ giá trị x nào thành giá trị Boolean tương đương bằng cách sử dụng toán tử: !!x hai lần.


Điều quan trọng là phải hành động dữ liệu điều hành- tình trạng này. nếu dịch từ tiếng Anh có nghĩa là Nếu như. Điều kiện được chấp nhận làm đối số (trong ngoặc đơn). Điều kiện có thể là một biểu thức logic hoặc một biến logic. Nói một cách đơn giản, ý nghĩa của biểu thức sẽ là:

Nếu (điều kiện)(
điều kiện được đáp ứng, hãy làm điều này
}
khác
{
điều kiện không được đáp ứng, hãy làm khác đi
}
Tôi hy vọng logic của hoạt động có điều kiện là rõ ràng. Bây giờ chúng ta hãy xem một ví dụ.

$a = 5;
$b = 25;

// Bây giờ hãy chú ý! Điều kiện: Nếu $b lớn hơn $a
// Dấu hiệu > và< , как и в математике, обозначают больше и меньше
nếu($b > $a)
{
// nếu điều kiện được đáp ứng thì thực hiện hành động này
echo "$b lớn hơn $a";
}
khác
{
// nếu không được thực thi thì cái này
echo "$a lớn hơn hoặc bằng $b";
}
?>
Biểu tình Nguồn tải xuống
Kết quả là tập lệnh sẽ xuất ra 25 hơn 5. Ví dụ khá đơn giản. Tôi hy vọng mọi thứ đều rõ ràng. Bây giờ tôi đề xuất xem xét một tình huống phức tạp hơn, trong đó phải đáp ứng một số điều kiện. Mỗi điều kiện mới sẽ chứa sau điều kiện chính nếu như()- phụ trợ, được viết là khác nếu(). Cuối cùng nó sẽ như thường lệ khác.

Nhiệm vụ: Việc kiểm tra được thực hiện ở trường. Kịch bản cần tính điểm, biết điều kiện để đạt được từng lớp và bản thân điểm của học sinh. Hãy xem cách viết bài này và đừng quên đọc phần bình luận.

$kiểm tra = 82; // giả sử một học sinh đã viết bài kiểm tra với 82 điểm

// viết điều kiện đầu tiên cho số 5
nếu($kiểm tra > 90)
{
// nếu điều kiện được đáp ứng thì thực hiện hành động này.
echo "Xếp hạng 5";
}
// Dấu && có nghĩa là "và, hợp", điều kiện đó được đáp ứng nếu cả hai đều đúng
// tức là điểm nhỏ hơn 91 và lớn hơn 80 thì 4. Ngược lại, điều kiện sẽ được đọc thêm
nếu không thì ($test< 91 && $test > 80)
{
echo "Xếp hạng 4";
}
nếu không thì ($test< 81 && $test > 70)
{
echo "Xếp hạng 3";
}
khác
{
echo "Chúng ta nên viết lại bài kiểm tra...";
}
?>
Biểu tình Nguồn tải xuống
Học sinh của chúng tôi vừa có thời gian nghỉ ngơi vừa làm bài kiểm tra bình thường sẽ nhận được đánh giá 4! Tôi hy vọng nguyên tắc hoạt động là rõ ràng.

Cũng có thể ghi lại ngắn gọn thao tác của một thao tác có điều kiện, khi bạn chỉ cần thực hiện một hành động nếu điều kiện được đáp ứng.

$tuổi = 19; // biến theo tuổi

Nếu ($ tuổi > 17)(
echo "Vậy đó! Tôi có thể làm bất cứ điều gì tôi muốn! Tôi đã $age rồi!";
}
Một ví dụ khá hay ghi chú ngắn hoạt động có điều kiện. khác không cần thiết phải viết.

Toán tử so sánh trong PHP

Nguyên tắc hoạt động của một hoạt động có điều kiện là rõ ràng. Nhưng, như bạn hiểu, có nhiều cách để so sánh hơn. Chúng ta hãy nhìn vào bảng dưới đây với các toán tử so sánh.

Ví dụ Tên Kết quả
$a == $b Bằng Đúng nếu $a bằng $b
$a === $b Giống hệt True nếu $a bằng $b và cả hai biến đều cùng loại
$a != $b Không bằng Đúng nếu $a không bằng $b
$a === $b Không giống True nếu $a không bằng $b và cả hai loại đều không giống nhau
$a > $b Lớn hơn Đúng nếu $a lớn hơn $b
$a< $b Меньше чем True, если $a меньше, чем $b
$a >= $b Lớn hơn hoặc bằng Đúng nếu $a lớn hơn hoặc bằng $b
$a<= $b Меньше или равно True, если $a меньше или равно $b
Bây giờ chúng ta hãy nhìn vào các nhà khai thác với các ví dụ:

// trái với thói quen = có nghĩa là gán giá trị cho một biến và == bằng
nếu ($a == 5)(
echo "$a là 5"; // sẽ in ra "5 bằng 5"
) khác (
echo "$a không bằng 5";
}

Nếu ($a != 6)(
echo "$a không bằng 6"; // sẽ in ra "5 không bằng 6". Cần thiết trong trường hợp bị từ chối
) khác (
echo "$a bằng cách nào đó bằng 6";
}

// càng ngày càng ít tôi nghĩ mọi thứ đều rõ ràng. Do đó ví dụ phức tạp hơn
nếu ($a<= 6){
echo "$a nhỏ hơn hoặc bằng 6"; // sẽ in ra "5 nhỏ hơn hoặc bằng 6"
) khác (
echo "$a lớn hơn 6";
}

Toán tử logic PHP

Đôi khi bạn cần so sánh không phải một biến mà là hai hoặc nhiều biến cùng một lúc trong một điều kiện. Đối với điều này có toán tử logic.

Ví dụ Tên Kết quả
$a và $b Logic "và" TRUE nếu cả $a và $b đều TRUE.
$a hoặc $b Logic "hoặc" TRUE nếu $a hoặc $b là TRUE.
$a xor $b Độc quyền "hoặc" TRUE nếu $a hoặc $b là TRUE, nhưng không phải cả hai.
! $a Phủ định TRUE nếu $a không TRUE.
$a && $b Logic "và" TRUE nếu cả $a và $b đều TRUE.
$a || $b Boolean "hoặc" TRUE nếu $a hoặc $b là TRUE.
Chúng tôi đã nhận thấy rằng đối với các hoạt động hoặc có nhà khai thác bổ sung? Điều này được thực hiện để ưu tiên các hoạt động so sánh phức tạp. Trong bảng, các toán tử logic được liệt kê theo thứ tự ưu tiên: từ nhỏ nhất đến lớn nhất, ví dụ: || có mức độ ưu tiên cao hơn hoặc.

Tiếp tục nào để ví dụ

$a = 5;
$b = 6;
$c = 7;

// điều kiện: Nếu 5 không bằng 6 (TRUE) VÀ 6 không bằng 7 (TRUE)
nếu ($a< 6 && $b != $c){
echo "Đúng vậy!"; // sẽ in ra "Đúng vậy!" bởi vì CẢ HAI điều kiện đều ĐÚNG
) khác (
echo "Một trong các điều kiện không đúng";
}

// điều kiện: Nếu 6 không bằng 6 (FALSE) HOẶC 6 không bằng 7 (TRUE)
nếu ($b != 6 || $b != $c)(
echo "Vậy đó!"; // sẽ hiển thị "Chính là nó!", bởi vì ít nhất MỘT trong các điều kiện là ĐÚNG
) khác (
echo "Cả hai điều kiện đều sai";
}

Toán tử bậc ba

Tôi đề nghị bạn quay lại vấn đề về mã ternary sau. Tôi không thể không nhắc đến nó, vì đây là một thiết kế quan trọng giúp giảm đáng kể kích thước mã. Tôi khuyên bạn nên xem mã ngay lập tức.

Ý chính của mã:(tình trạng) ? giá trị của a if true: giá trị của a if false

Vì vậy, chúng tôi rút ngắn câu lệnh if. Tuy nhiên, thao tác này chỉ có hiệu lực khi gán giá trị cho một biến. Bây giờ hãy xem một ví dụ đã hoàn thành.

// Ví dụ sử dụng toán tử bậc ba
$settings = (empty($_POST["settings"])) ? "Mặc định" : $_POST["settings"];

// Đoạn mã trên tương tự như khối sau sử dụng if/else
if (empty($_POST["settings"])) (
$settings = "Mặc định"; // Nếu không có gì được chuyển đi thì để nguyên là "Mặc định"
) khác (
$settings = $_POST["settings"]; // Nếu được truyền thì $settings sẽ được gán giá trị được truyền.
}
?>
Đọc các nhận xét về mã và mọi thứ sẽ rõ ràng.

Cám ơn vì sự quan tâm của bạn!


Hai câu lệnh chính cung cấp cấu trúc phân nhánh có điều kiện là if và switch. Câu lệnh if được sử dụng rộng rãi nhất trong các cấu trúc nhảy có điều kiện. Mặt khác, trong một số trường hợp nhất định, đặc biệt nếu bạn phải điều hướng qua một trong nhiều nhánh tùy thuộc vào giá trị của một biểu thức và việc sử dụng một số câu lệnh if dẫn đến mã phức tạp hơn, câu lệnh switch sẽ trở nên thuận tiện hơn .

Trước khi nghiên cứu các toán tử này, bạn cần hiểu các biểu thức và phép toán logic.

Các phép toán logic

Các phép toán logic cho phép bạn kết hợp các giá trị logic (còn gọi là giá trị chân lý) để tạo ra các giá trị logic mới. Như thể hiện trong bảng dưới đây, trong Ngôn ngữ PHP các toán tử logic tiêu chuẩn (và, hoặc, không và xor) được hỗ trợ, với hai toán tử đầu tiên có phiên bản thay thế.

Các hoạt động logic của PHP
Hoạt động Sự miêu tả
Một phép toán có kết quả đúng khi và chỉ khi cả hai toán hạng của nó đều đúng
hoặc Một phép toán có kết quả đúng nếu một trong các toán hạng của nó (hoặc cả hai toán hạng) là đúng
! Một phép toán có kết quả đúng nếu toán hạng đơn của nó (được đặt ở bên phải dấu phép tính) là sai và sai nếu toán hạng của nó là đúng
xor Một phép toán có kết quả đúng nếu một trong hai toán hạng của nó (nhưng không phải cả hai) đều đúng
&& Tương tự như toán tử and, nhưng liên kết các toán hạng của nó chặt chẽ hơn toán tử này
|| Tương tự như toán tử hoặc, nhưng liên kết các toán hạng của nó chặt chẽ hơn toán tử này

Hoạt động && và || hẳn đã quen thuộc với các lập trình viên C. Vận hành! thường được gọi không phải vì nó trở thành phủ định của toán hạng mà nó được áp dụng.

Để kiểm tra xem cả hai toán hạng có đúng hay không, bạn sử dụng toán tử AND, toán tử này cũng có thể được viết dưới dạng ký hiệu kép (&&). Cả hai toán tử AND và && đều logic, điểm khác biệt duy nhất của chúng là toán tử && có nhiều ưu tiên cao hơn toán tử AND. Điều tương tự cũng áp dụng cho toán tử OR và ||. Toán tử AND chỉ trả về TRUE nếu cả hai toán hạng đều TRUE; nếu không, FALSE được trả về.

Để kiểm tra xem ít nhất một toán hạng có TRUE hay không, bạn sử dụng toán tử OR, toán tử này cũng có thể được viết dưới dạng kép đường thẳng đứng(||). Toán tử này trả về TRUE nếu ít nhất một trong các toán hạng của nó là TRUE.

Khi sử dụng toán tử OR trong một chương trình, các lỗi logic khó phát hiện có thể xuất hiện. Nếu PHP phát hiện toán hạng đầu tiên là TRUE, nó sẽ không đánh giá giá trị của toán hạng thứ hai. Điều này giúp tiết kiệm thời gian thực thi, nhưng bạn phải cẩn thận để đảm bảo rằng mã mà chương trình phụ thuộc vào để chạy chính xác không được đặt trong toán hạng thứ hai.

Toán tử XOR cho phép bạn kiểm tra xem chỉ một trong các toán hạng (chứ không phải cả hai) là TRUE hay không. Toán tử này trả về TRUE nếu một và chỉ một trong các toán hạng của nó là TRUE. Nếu cả hai toán hạng đều TRUE thì toán tử sẽ trả về FALSE.

Bạn có thể đảo ngược giá trị Boolean bằng toán tử NOT, thường được viết là dấu chấm than(!). Nó trả về TRUE nếu toán hạng là FALSE và FALSE nếu toán hạng là TRUE.

Bảng dưới đây cho thấy một số biểu thức logic và kết quả của họ:

Hoạt động so sánh

Bảng bên dưới hiển thị các phép toán so sánh có thể được sử dụng với số hoặc chuỗi:

Hoạt động so sánh
Hoạt động Tên Sự miêu tả
== Bằng Một phép toán có kết quả đúng nếu toán hạng của nó bằng và sai nếu ngược lại
!= Không công bằng Một phép toán có kết quả là sai nếu toán hạng của nó bằng và đúng nếu ngược lại
< Ít hơn Một phép toán có kết quả đúng nếu toán hạng bên trái nhỏ hơn toán hạng bên phải và ngược lại là sai
> Hơn Một phép toán có kết quả đúng nếu toán hạng bên trái lớn hơn toán hạng bên phải và ngược lại là sai
<= Ít hơn hoặc bằng Một phép toán có kết quả đúng nếu toán hạng bên trái nhỏ hơn hoặc bằng toán hạng bên phải và sai nếu ngược lại
>= Nhiều hơn hoặc bằng Một phép toán có kết quả là đúng nếu toán hạng bên trái lớn hơn hoặc bằng toán hạng bên phải và sai nếu ngược lại
=== Giống hệt nhau Một phép toán có kết quả đúng nếu cả hai toán hạng đều bằng nhau và cùng loại và sai nếu ngược lại

Một lỗi rất phổ biến bạn cần mắc phải là không nhầm lẫn toán tử gán (=) với toán tử so sánh (==).

Ưu tiên hoạt động

Tất nhiên, không nên lạm dụng phong cách lập trình trong đó trình tự các thao tác chủ yếu được xác định bằng cách sử dụng các quy tắc ưu tiên, vì mã viết theo phong cách này rất khó hiểu đối với những người nghiên cứu sau này, nhưng cần lưu ý rằng so sánh các hoạt động có mức độ ưu tiên cao hơn các hoạt động logic. Điều này có nghĩa là một câu lệnh có biểu thức kiểm tra như bên dưới

Mã PHP $var1 = 14; $var2 = 15; nếu (($var1< $var2) && ($var2 < 20)) echo "$var2 больше $var1 но меньше 20";

có thể được viết lại như

Mã PHP ...nếu ($var1< $var2 && $var2 < 20) ...

câu lệnh if-else

Hướng dẫn nếu như cho phép một khối mã được thực thi nếu biểu thức điều kiện trong lệnh này đánh giá là TRUE; nếu không thì khối mã sẽ không được thực thi. Bất kỳ biểu thức nào cũng có thể được sử dụng làm điều kiện, bao gồm kiểm tra giá trị khác 0, đẳng thức, NULL liên quan đến các biến và giá trị được hàm trả về.

Việc những điều kiện riêng lẻ nào tạo thành câu điều kiện không quan trọng. Nếu điều kiện đúng thì nó được thực thi Mã chương trình, được đặt trong dấu ngoặc nhọn (()). Nếu không, PHP sẽ bỏ qua nó và chuyển sang kiểm tra điều kiện thứ hai, kiểm tra tất cả các điều kiện bạn đã viết ra cho đến khi nó chạm vào câu lệnh khác, sau đó nó sẽ tự động thực thi khối này. Câu lệnh else là tùy chọn.

Cú pháp của câu lệnh if là:

If (biểu thức điều kiện) (khối mã chương trình;)

Nếu kết quả đánh giá một biểu thức điều kiện là TRUE thì khối mã chương trình nằm sau nó sẽ được thực thi. Trong ví dụ sau, nếu $username được đặt thành "Quản trị viên", thông báo chào mừng sẽ được hiển thị. Nếu không sẽ không có gì xảy ra:

Mã PHP $username = "Quản trị viên"; if ($tên người dùng == "Quản trị viên") ( echo "Chào mừng đến với trang quản trị."; )

Tuy nhiên, nếu một khối mã chương trình chỉ chứa một lệnh thì dấu ngoặc nhọn là tùy chọn, thói quen tốt– luôn cài đặt chúng vì chúng giúp mã dễ đọc và chỉnh sửa hơn.

Câu lệnh else tùy chọn là một khối mã được thực thi theo mặc định khi biểu thức điều kiện đánh giá là FALSE. Câu lệnh else không thể được sử dụng riêng biệt với câu lệnh if vì else không có biểu thức điều kiện riêng. Nghĩa là, else và if phải luôn đi cùng nhau trong mã của bạn:

câu lệnh if và else $username = "không có quản trị viên"; if ($tên người dùng == "Quản trị viên") ( echo "Chào mừng đến với trang quản trị."; ) else ( echo "Chào mừng đến với trang thành viên."; )

Hãy nhớ đóng một khối mã trong câu lệnh if bằng dấu ngoặc nhọn nếu bạn đặt dấu ngoặc nhọn ở đầu khối. Khối else cũng phải có dấu ngoặc nhọn mở và đóng, giống như khối if.

Tất cả điều này đều tốt, ngoại trừ khi bạn cần kiểm tra nhiều điều kiện liên tiếp. Hướng dẫn phù hợp cho việc này nếu không. Nó cho phép bạn kiểm tra điều kiện bổ sung cho đến khi tìm thấy true hoặc đạt tới khối else. Mỗi câu lệnh elseif có khối mã riêng được đặt ngay sau biểu thức điều kiện của câu lệnh elseif. Câu lệnh elseif xuất hiện sau câu lệnh if và trước câu lệnh else, nếu có.

Cú pháp câu lệnh elseif phức tạp hơn một chút, nhưng ví dụ sau sẽ giúp bạn hiểu nó:

Kiểm tra nhiều điều kiện $username = "Khách"; if ($username == "Quản trị viên") ( echo "Chào mừng đến với trang quản trị."; ) elseif ($username == "Khách") ( echo "Không thể xem."; ) else ( echo "Chào mừng đến với trang người dùng."; )

Ở đây có hai điều kiện được kiểm tra và tùy thuộc vào giá trị của biến $username, hành động khác nhau. Và vẫn có cơ hội để làm điều gì đó nếu giá trị của biến khác với hai giá trị đầu tiên.

Toán tử bậc ba?:

Toán tử ?: là toán tử bậc ba (ternary) có ba toán hạng. Nó hoạt động tương tự như câu lệnh if nhưng trả về giá trị của một trong hai biểu thức. Biểu thức sẽ được đánh giá được xác định bởi biểu thức điều kiện. Dấu hai chấm (:) đóng vai trò là dấu phân cách biểu thức:

(tình trạng) ? đánh giá_if_condition_true: đánh giá_if_condition_false;

Ví dụ bên dưới kiểm tra một giá trị và trả về các chuỗi khác nhau tùy thuộc vào giá trị đó là TRUE hay FALSE:

Tạo tin nhắn bằng toán tử ?: $logged_in = TRUE; $user = "Igor"; $banner = (!$logged_in) ? "Đăng ký!" : "Chào mừng trở lại, $user!"; biểu ngữ tiếng vang $;

Rõ ràng là tuyên bố trên tương đương với tuyên bố sau:

Mã PHP $logged_in = TRUE; $user = "Igor"; if (!$logged_in) ( $banner = "Đăng ký!"; ) else ( $banner = "Chào mừng quay lại, $user!"; ) echo $banner;

câu lệnh chuyển đổi

Hướng dẫn công tắc so sánh một biểu thức với nhiều giá trị. Theo quy định, một biến được sử dụng làm biểu thức, tùy thuộc vào giá trị của nó mà một khối mã cụ thể phải được thực thi. Ví dụ: hãy tưởng tượng một biến $action có thể có các giá trị "ADD", "MODIFY" (thay đổi) và "DELETE" (xóa). Câu lệnh switch giúp dễ dàng xác định khối mã sẽ được thực thi cho từng giá trị này.

Để hiển thị sự khác biệt giữa câu lệnh if và switch, hãy kiểm tra một biến với nhiều giá trị. Ví dụ bên dưới hiển thị mã chương trình thực hiện kiểm tra như vậy dựa trên câu lệnh if và trong ví dụ sau, dựa trên câu lệnh switch:

Kiểm tra một trong nhiều giá trị (câu lệnh if) if ($action == "ADD") ( echo "Thực hiện phép cộng."; echo "Số lượng lệnh trong mỗi khối là không giới hạn."; ) elseif ($action == "MODIFY") ( echo "Thực hiện thay đổi ."; ) elseif ($action == "DELETE") ( echo "Thực hiện xóa."; ) Kiểm tra một trong một số giá trị (câu lệnh switch) switch ($action) ( case "ADD": echo "Thực hiện phép cộng."; echo "Số lượng lệnh trong mỗi khối là không giới hạn."; break; case "MODIFY": echo "Thực hiện thay đổi."; break; case "DELETE" : echo "Thực hiện xóa."; break; )

Câu lệnh switch lấy giá trị bên cạnh từ khóa switch và bắt đầu so sánh nó với tất cả các giá trị đứng gần đó với từ khóa trường hợp, theo thứ tự vị trí của chúng trong chương trình. Nếu không tìm thấy kết quả khớp thì không có khối nào được thực thi. Khi tìm thấy kết quả khớp, khối mã tương ứng sẽ được thực thi. Các khối mã bên dưới cũng được thực thi - cho đến khi kết thúc câu lệnh switch hoặc cho đến khi từ khóa phá vỡ. Điều này thuận tiện cho việc tổ chức một quy trình bao gồm nhiều bước liên tiếp. Nếu người dùng đã hoàn thành một số bước, họ sẽ có thể tiếp tục quá trình từ nơi mình đã dừng lại.

Biểu thức bên cạnh câu lệnh switch phải trả về giá trị thuộc kiểu nguyên thủy, chẳng hạn như số hoặc chuỗi. Một mảng chỉ có thể được sử dụng như một phần tử riêng biệt có giá trị thuộc loại cơ bản.

Lựa chọn mặc định

Nếu giá trị của biểu thức điều kiện không khớp với bất kỳ tùy chọn nào được đề xuất trong câu lệnh tình huống, câu lệnh switch trong trường hợp này cho phép bạn thực hiện điều gì đó, giống như hướng dẫn cấu trúc khác nếu, nếu không, khác. Để làm điều này, bạn cần thực hiện một hướng dẫn là tùy chọn cuối cùng trong danh sách lựa chọn mặc định:

Tạo thông báo lỗi bằng câu lệnh mặc định $action = "XÓA"; switch ($action) ( case "ADD": echo "Thực hiện phép cộng."; echo "Số lượng lệnh trong mỗi khối là không giới hạn."; break; case "MODIFY": echo "Thực hiện thay đổi."; break; case "DELETE" : echo "Thực hiện xóa."; break; default: echo "Lỗi: Lệnh $action không được phép, ". "chỉ có thể sử dụng các lệnh THÊM, SỬA ĐỔI và XÓA."; )

Ngoài cú pháp thông thường, câu lệnh switch còn hỗ trợ một cú pháp thay thế - xây dựng từ khóa công tắc/công tắc cuối, xác định phần đầu và phần cuối của câu lệnh thay vì dấu ngoặc nhọn:

Câu lệnh switch kết thúc bằng từ khóa endswitch switch ($action): case "ADD": echo "Thực hiện thêm."; echo "Số lượng lệnh trong mỗi khối là không giới hạn."; phá vỡ; case "MODIFY": echo "Thực hiện sửa đổi."; phá vỡ; case "DELETE": echo "Thực hiện xóa."; phá vỡ; mặc định: echo "Lỗi: Lệnh $action không hợp lệ, ". "Chỉ có thể sử dụng các lệnh THÊM, SỬA ĐỔI và XÓA."; công tắc cuối;

Thực hiện ngắt

Nếu chỉ có khối mã tương ứng với một giá trị nhất định, thì từ khóa break sẽ được chèn vào cuối khối này. Trình thông dịch PHP, khi gặp từ khóa break sẽ tiến hành thực thi dòng nằm sau dấu ngoặc nhọn đóng của câu lệnh switch (hoặc từ khóa endswitch). Nhưng nếu bạn không sử dụng câu lệnh break thì việc kiểm tra sẽ tiếp tục trong các nhánh trường hợp tiếp theo của cấu trúc switch. Dưới đây là một ví dụ:

Điều gì xảy ra khi vắng mặt câu lệnh ngắt $action="ĐẶT HÀNG LẮP RÁP"; switch ($action) ( case "ĐẶT HÀNG LẮP RÁP": echo "Lệnh lắp ráp.
"; trường hợp "GÓI": echo "Pack.
"; trường hợp "SHIP": echo "Giao hàng cho khách.
"; }

Nếu biến $action được đặt thành "ASSEMBLE ORDER", kết quả của đoạn này sẽ như sau:

Thu thập đơn đặt hàng. Bọc lại. Giao hàng cho khách hàng.

Giả sử rằng giai đoạn xây dựng đã được hoàn thành và biến $action được đặt thành "GÓI", sẽ thu được kết quả sau:

Bọc lại. Giao hàng cho khách hàng.

Đôi khi, việc không có câu lệnh break là hữu ích, như trong ví dụ trên nơi hình thành các giai đoạn thứ tự, nhưng trong hầu hết các trường hợp, câu lệnh này nên được sử dụng.

Loại dữ liệu Chu kỳ 1 2 3 4 5 6 7 8 9 10