2011-01-05 43 views
45

Có chức năng chuyển đổi/đảo ngược giá trị boolean trong PHP không?Chuyển đổi giá trị Boolean/đảo ngược

Giống như ... một phím tắt cho:

if($boolean === true){ 
    $boolean = false; 
}else{ 
    $boolean = true; 
} 
+3

http://uk.php.net/manual/en/language.operators.logical.php – Piskvor

Trả lời

103

Có:

$boolean = !$boolean; 

nếu nó không phải là một giá trị boolean, bạn có thể sử dụng xây dựng ternary:

$int = ($some_condition ? 1 : 2); // if $some_condition is true, set 1 
            // otherwise set 2 
+1

'$ bool =! $ Bool' sẽ chuyển * true * thành * false *, nhưng nó sẽ biến * false * để * đúng *? – jolt

+2

@Tom chắc chắn. Hãy dùng thử nó –

+0

Mã này rất tuyệt vời. Nó rất đơn giản, và tôi sẽ không bao giờ nghĩ về nó! – 131

-9

bool có thể là TRUE hoặc FALSE.

Sử dụng

sử dụng này: (boolean) $ đỏ = varbool (false);
echo $ red;

cho đúng nó sẽ trở lại zero và một cho sai

function varbool($val){ 

    $val +=(-1); 
    $val *= (-1); 
    return $val; 
} 

Cảm ơn bạn ...

+4

Chỉ một câu hỏi ... ** tại sao **? Có gì sai với '!'? (Tôi bị cám dỗ với -0,5 để phát minh lại bánh xe và -0.5 vì đã làm rất kém) – delnan

+11

Cảm ơn bạn đã cười! – Max

+0

Elegance là tên sau tên của bạn và trước họ của bạn, nếu bạn có ba tên. – Ben

0

One touch pick của boolean:

$ dò = $ = $ picker máy dò;

3

gì về việc sử dụng Absolute Giá trị chức năng abs(), $ val có thể được "1" hoặc "0" và bạn muốn nghịch nó:

$val = abs($val-=1); 

Logic:

Luôn trừ "1" từ số và loại bỏ "dấu".

1 - 1 = 0 
abs(0) = 0 

0 - 1 = -1 
abs(-1) = 1 
2

Nếu bạn muốn mã ngắn nhất có thể, XOR boolean với 1:

$boolean ^= 1; 

nghiêm ngặt này trả về một int không phải là một boolean. Nó không hoạt động theo cách tương tự như $boolean = !$boolean (và hơi kém hiệu quả) nhưng đối với hầu hết các mục đích, nó sẽ thực hiện công việc.

+0

tks @Gannet đã thực hiện thủ thuật cho tôi! –

1

Chỉ cần sử dụng ! để đảo ngược kết quả sao cho nó có thể giống như: $ boolean =! (Bool) $ result;

Các vấn đề liên quan