Nếu như php

Ah, yes, booleans - bit values that are either set [TRUE] or not set [FALSE].  Now that we have 64 bit compilers using an int variable for booleans, there is *one* value which is FALSE [zero] and 2**64-1 values that are TRUE [everything else].  It appears there's a lot more truth in this universe, but false can trump anything that's true...

PHP's handling of strings as booleans is *almost* correct - an empty string is FALSE, and a non-empty string is TRUE - with one exception:  A string containing a single zero is considered FALSE.  Why?  If *any* non-empty strings are going to be considered FALSE, why *only* a single zero?  Why not "FALSE" [preferably case insensitive], or "0.0" [with how many decimal places], or "NO" [again, case insensitive], or .. ?

The *correct* design would have been that *any* non-empty string is TRUE - period, end of story.  Instead, there's another GOTCHA for the less-than-completely-experienced programmer to watch out for, and fixing the language's design error at this late date would undoubtedly break so many things that the correction is completely out of the question.

Speaking of GOTCHAs, consider this code sequence:
$x=TRUE;
$y=FALSE;
$z=$y OR $x;
?>

Is $z TRUE or FALSE?

In this case, $z will be FALSE because the above code is equivalent to rather than as might be expected - because the OR operator has lower precedence than assignment operators.

On the other hand, after this code sequence:
$x=TRUE;
$y=FALSE;
$z=$y || $x;
?>

$z will be TRUE, as expected, because the || operator has higher precedence than assignment:  The code is equivalent to $z=[$y OR $x].

________số 8_______

elseif, như tên gọi của nó, là sự kết hợp giữa ifelse. Giống như else, nó mở rộng một câu lệnh if để thực thi một câu lệnh khác trong trường hợp biểu thức if ban đầu có giá trị là false. Tuy nhiên, không giống như else, nó sẽ chỉ thực thi biểu thức thay thế đó nếu biểu thức điều kiện elseif ước tính thành true. Ví dụ: đoạn mã sau sẽ hiển thị a lớn hơn b, a bằng b hoặc a nhỏ hơn b

if0

Có thể có một số elseif trong cùng một câu lệnh if. Biểu thức elseif đầu tiên [nếu có] có giá trị là true sẽ được thực thi. Trong PHP, bạn cũng có thể viết 'else if' [bằng hai từ] và hành vi sẽ giống với hành vi của 'elseif' [bằng một từ]. Ý nghĩa cú pháp hơi khác một chút [nếu bạn quen thuộc với C, đây là hành vi giống nhau] nhưng điểm mấu chốt là cả hai sẽ dẫn đến hành vi giống hệt nhau

Câu lệnh elseif chỉ được thực thi nếu biểu thức if trước đó và bất kỳ biểu thức elseif nào trước đó được đánh giá thành false và biểu thức elseif hiện tại được đánh giá thành true

Ghi chú. Lưu ý rằng elseifelse2 sẽ chỉ được coi là hoàn toàn giống nhau khi sử dụng dấu ngoặc nhọn như trong ví dụ trên. Khi sử dụng dấu hai chấm để xác định điều kiện if/_______9_______ của bạn, bạn không được tách else2 thành hai từ, nếu không PHP sẽ thất bại với lỗi phân tích cú pháp

// Integers
echo 1 1; // 0
echo 1 2; // -1
echo 2 1; // 1

// Floats
echo 1.5 1.5; // 0
echo 1.5 2.5; // -1
echo 2.5 1.5; // 1

// Strings
echo "a" "a"; // 0
echo "a" "b"; // -1
echo "b" "a"; // 1

echo "a" "aa"; // -1
echo "zz" "aa"; // 1

// Arrays
echo [] []; // 0
echo [1, 2, 3] [1, 2, 3]; // 0
echo [1, 2, 3] []; // 1
echo [1, 2, 3] [1, 2, 1]; // 1
echo [1, 2, 3] [1, 2, 4]; // -1

// Objects
$a = [object] ["a" => "b"];
$b = [object] ["a" => "b"];
echo $a $b; // 0

$a = [object] ["a" => "b"];
$b = [object] ["a" => "c"];
echo $a $b; // -1

$a = [object] ["a" => "c"];
$b = [object] ["a" => "b"];
echo $a $b; // 1

// not only values are compared; keys must match
$a = [object] ["a" => "b"];
$b = [object] ["b" => "b"];
echo $a $b; // 1

?>

Chủ Đề