2014-01-13 1 views
0

Я нашел это в библиотеке и задаюсь вопросом, стоит ли это делать? и зачем ссылаться на истину и ложь?Есть ли у этого кода PHP какой-то смысл?

$return = true; 

if(/* Something went success */) 
{ 
    $return &= true; 
} 
else 
{ 
    $return &= false; 
} 

return $return; 
+0

И каков ваш вопрос? – Vucko

+0

Зачем ссылаться на истину и ложь? –

+0

В этом вопросе стоит ли этот код? –

ответ

4

Ну в данном примере это не имеет смысла использовать двоичный код.

В более широком сценарии это действительно имеет смысл.

Давайте предположим, что у вас есть несколько шагов, которые могут привести к истинным или ложным, которые образуют своего рода процесс:

$return = true; 

$return = step1(); 
$return = step2(); 
return $return; 

Процесс вышел из строя, когда step1 или step2 не удалось.

Когда step1 возвращает ложь, то ваш процесс не удалось, но вы по-прежнему выполнять step2 Однако если step2() возвращает истину, а потом вдруг весь ваш процесс возвращает истину, даже если шаг, прежде чем не удалось.

бинарными и-ки результатов вы убедитесь, что когда-то не удалось $return останется не удалось, как

true & true = true 
true & false = false 
false & false = false 

например

$return = true; 

$return &= step1(); 
$return &= step2(); 
return $return; 

Это не редкость в сценарии были набор валидаторов применяется к данным и желательно, если один валидатор не смог продолжать идти, не выходя рано. Может быть полезно указать, что валидатор потерпел неудачу, и т. Д.

+0

Ну, спасибо! Я получил объяснение, но его не стоит делать, я думаю. Его просто сложный код. И вы будете продолжать отлаживать его, где $ return изменяется. –

+0

@WaqarAlamgir ваш код выше нет, нет. Но я не был уверен, что это какая-то упрощенная версия более сложного сценария. Если нет, то нет. – Samuel

+0

Я имею в виду, почему сложный код, если он не стоит! –

0
$return &= true; 

такой же, как

$return = $return & true; 

true & true // 1 
false & true // 0 
true & false // 0 
false & false //0 

Код действительно хотите сделать что-то вроде:

Если Something went success, а затем вернуться true если $return истинно, возврат false если $return - false.

Else, независимо от того, $return есть, возврат false.

Но оно возвращает 0/1 вместо true/false.

Если вы хотите, чтобы вернуться на самом деле true/false, вы должны сделать:

if($condition_of_something) 
{ 
    $return = $return && true; 
} 
else 
{ 
    $return = false; 
} 

return $return; 

И вы могли бы упростить код для:

return $return && $condition_of_something; 
+1

Да, это так. Но есть ли у этого кода какой-то смысл? (Я имею в виду, что, хотя это верно, я сомневаюсь, что это ответ, потому что оригинальный вопрос не совсем понятен) –

+0

Зачем мне возвращаться как этот «$ return & true» –

+0

@AlmaDo См. Мое редактирование, сделанное некоторое объяснение. – xdazz

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