2016-10-10 2 views
-1

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

if($foo = 'somevalue') //or if($foo = $somevalue) 
{ 

} 

Я вижу, только если ($ foo) это значение, если ($ foo == TRUE). или if ($ foo ==,>, < somevalue)
, но в этом случае, если $ foo удерживает какое-то значение ???

+0

В коде его просто присваивание переменной. Условие If проверяет для сравнения. –

+0

так ... оно же как назначение вне если утверждение справедливо? – doflamingo

+0

чья-то опечатка .. – nogad

ответ

2

Вы просто одновременно назначая значение для $foo и оценки его в if заявлении. Поэтому, если значение $foo соответствует false, тогда код внутри оператора if не будет выполняться. В качестве примера:

if ($foo = 12) { // foo's value is now 12 
    // code here would execute 
} 
echo $foo; // 12 

if ($foo = 0) { // foo's value is now 0 
    // would not execute 
} 
echo $foo; // 0 
0

Это if заявление будет просто либо

  • возвращающие и присвоить строку somevalue к $foo
  • возвращение ложным, потому что somevalue не могут быть отнесены к $foo

Во многих случаях это ошибка при написании этого if statment, где кто-то может захотеть проверить, является ли значение $foo строкой somevalue.

Чтобы правильно оценить, что можно было бы хотеть следующее

if ($foo == 'somevalue') //$somevalue 

Где = бы присвоить новое значение, == сравнивает два значения. см. this question для получения дополнительной информации.

0

Если у вас есть знак single =, это означает оператор присваивания. i.e Условие if всегда возвращает true.

$a = 2; 
if ($a = 3) { 
    echo "True"; 
} else { 
    echo "False"; 
} 

//Output: True 

Принимая во внимание, если вы используете логический == оператора, он сравнивает два значения и возвращают логическое значение истина/ложь.

$a = 2; 
if ($a == 3) { 
    echo "True"; 
} else { 
    echo "False"; 
} 

//Output: False 
+0

'Условие if всегда будет возвращать true.' неверно. https://eval.in/657910 – chris85

+0

Ну, если вы 'var_dump ($ a = 3);' здесь, он будет явно возвращать 'int (3) True', который удовлетворяет условию if. –

+0

Да, если это '3'. Если это ложь (как показала демонстрация), хотя она не будет 'всегда' быть' истиной'. Например, посмотрите на руководство, http://php.net/manual/en/mysqli.quickstart.prepared-statements.php, если присваивание всегда было истинным 'if (! ($ Stmt = $ mysqli-> prepare (" INSERT INTO test (id) VALUES (?) "))) {' Не имеет смысла. – chris85

2

как многие скажут = присваивает значение. однако это полезно в операциях if, а также

заявление if if($foo = 'somevalue') обычно плохое, потому что it will always evaluate to true. Однако if($foo = $somevalue) несколько немного лучше, потому что это похоже на то, что вы видите при проверке результатов запроса к базе данных, например, с

if ($result = $mysqli->query("SELECT Name FROM City LIMIT 10")) 

если $mysqli->query успешен в управлении, если заявление имеет значение верно, потому что в удачном результате retunr функции не считается FALSE, и внутри вашего оператора if вы можете ожидать, что $result будет использоваться для других функций mysqli_*.

Однако если $mysqli->query не будет успешным, он вернет false, а оператор if примет значение false, и вы можете настроить оператор else для вывода ошибки.вы получите тот же результат, если вы сделали

$somevalue = $mysqli->query("SELECT Name FROM City LIMIT 10") 
if($foo = $somevalue) 

но вы вроде тратить время, делая дополнительную строку, как это, когда вы можете просто пропустить $somevalue все вместе

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