2013-06-11 6 views
-1

code1 - это код из файла php zencart core php, я смущен, что это такое.
- код1, равный коду2?
и что такое & ~ просеивание?Что это за сложное выражение?

<?php 
/* code1 */ 
$errors_to_log = (version_compare(PHP_VERSION, 5.3, '>=') ? E_ALL & ~E_DEPRECATED & ~E_NOTICE : version_compare(PHP_VERSION, 5.4, '>=') ? E_ALL & ~E_DEPRECATED & ~E_NOTICE & ~E_STRICT : E_ALL & ~E_NOTICE); 

/* code2 */ 
if(version_compare(PHP_VERSION,5.3,'>=')){ 
    $errors_to_log = E_ALL & ~E_DEPRECATED &~E_NOTICE; 
}else if(version_compare(PHP_VERSION, 5.4, '>=')){ 
    $errors_to_log = E_ALL & ~E_DEPRECATED & ~E_NOTICE & ~E_STRICT; 
}else{ 
    $errors_to_log = E_ALL & ~E_NOTICE; 
} 
?> 
+0

Обычно в php, '&' относится к оператору BITWISE AND', а '~' относится к оператору BITWISE NOT' (инвертирование бит) ... – Kevin

+4

[Ссылка - что означает этот символ в PHP?] (Http : //stackoverflow.com/questions/3737139/reference-what-does-this-symbol-mean-in-php) – mario

ответ

1

Этот код 1 соответствует коду 2?

Да. Код 1 использует вложенные ternary operator, а код 2 использует структуру else-if. Код 1 был бы более понятным, если бы скобки были использованы для отображения приоритета.

Что означают & и ~?

& в php относится к BITWISE AND operator. ~ в php относится к BITWISE NOT или дополнению operator. В этом случае он дает значения дополнения констант.

Однако вам необходимо знать, что у ~ есть наивысший приоритет здесь.

+0

большое спасибо –

+0

Добро пожаловать! – Kevin

Смежные вопросы