if

(PHP 4, PHP 5)

Конструкция if является одной из наиболее важных во многих языках программирования, в том числе и PHP. Она предоставляет возможность условного выполнения фрагментов кода. Структура if реализована в PHP по аналогии с языком C:

if (выражение)
  инструкция

Как описано в разделе про выражения, выражение вычисляется в булево значение. Если выражение принимает значение TRUE, PHP выполнит инструкцию, а если оно принимает значение FALSE - проигнорирует. Информацию о том, какие значения считаются равными значению FALSE, можно найти в разделе 'Преобразование в булев тип'.

Следующий пример выведет a больше b, если значение переменной $a больше, чем $b:

<?php
if ($a $b)
  echo 
"a больше b";
?>

Часто необходимо, чтобы условно выполнялось более одной инструкции. Разумеется, для этого нет необходимости обворачивать каждую инструкцию в if. Вместо этого можно объединить несколько инструкций в блок. Например, следующий код выведет a больше b, если значение переменной $a больше, чем $b, и затем присвоит значение переменной $a переменной $b:

<?php
if ($a $b) {
  echo 
"a больше b";
  
$b $a;
}
?>

Инструкции if могут быть бесконечно вложены в другие инструкции if, что даёт большую гибкость в организации условного выполнения различных частей программы.

Коментарии

This is aimed at PHP beginners but many of us do this  Ocasionally...

When writing an if statement that compares two values, remember not to use a single = statement.

eg: 
<?php
if ($a $b)
     {
         print(
"something");
     }
?>
This will assign $a the value $b and output the statement.

To see if $a is exactly equal to $b (value not type) It should be:
<?php
     
if ($a == $b)
     {
         print(
"something");
     }
?>
Simple stuff but it can cause havok deep in classes/functions etc...
2008-01-09 04:54:05
http://php5.kiev.ua/manual/ru/control-structures.if.html
re: #80305

Again useful for newbies:

if you need to compare a variable with a value, instead of doing

<?php
if ($foo == 3bar();
?>

do

<?php
if (== $foobar();
?>

this way, if you forget a =, it will become

<?php
if ($foobar();
?>

and PHP will report an error.
2008-03-10 05:41:06
http://php5.kiev.ua/manual/ru/control-structures.if.html
You can do IF with this pattern :
<?php
$var 
TRUE;
echo 
$var==TRUE 'TRUE' 'FALSE'// get TRUE
echo $var==FALSE 'TRUE' 'FALSE'// get FALSE
?>
2008-08-09 20:53:51
http://php5.kiev.ua/manual/ru/control-structures.if.html
Автор:
@henryk (and everybody):

You should put your arguments in order by *least* likely to be true. That way if php is going to be able to quit checking, it will happen sooner rather than later, and your script will run (what amounts to unnoticeably) faster.

At least, that makes the most sense to me, but I don't claim omniscience.
2008-09-24 23:24:59
http://php5.kiev.ua/manual/ru/control-structures.if.html
Автор:
Re : henryk dot kwak at gmail dot com
<?php function message($m

echo 
"$m <br />\r"
return 
true

$k=false
if (
message("first")&& $k && message("second")){;} 
// will show 
//first 
class 
$k=true
if (
message("first")&& $k && message("second")){;} 
// will show 
//first 
//second 
?>
2008-09-28 08:03:35
http://php5.kiev.ua/manual/ru/control-structures.if.html
This has got the better part of my last 2 hours, so I'm putting it here, maybe it will save someone some time.

I had a

if (function1() && function2())

statement. Before returning true or false, function1() and function2() had to output some text. The trick is that, if function1() returns false, function2() is not called at all. It seems I should have known that, but it slipped my mind.
2009-03-07 10:28:14
http://php5.kiev.ua/manual/ru/control-structures.if.html
As an added note to the guy below, in such a case, use the !== operator like this.

$nkey = array_search($needle, $haystack);

if ($nkey !== false) { ...

The !== and the === compare the "types". So, with this type of comparision, 0 is not the same as the FALSE returned by the array_search array when it can not find a match. :)

Quoted Text:

===================================
Be careful with stuff like

if ($nkey = array_search($needle, $haystack)) { ...

if the returned key is actually the key 0, then the if won't be executed
===================================
2009-10-03 07:50:02
http://php5.kiev.ua/manual/ru/control-structures.if.html
Автор:
Note that safe type checking (using === and !== instead of == and !=) is in general somewhat faster. When you're using non-safe type checking and a conversion is really needed for checking, safe type checking is considerably faster.

===================================
Test (100,000,000 runs):
<?php
$start 
microtime(true);
for(
$i 0$i 100000000$i++)
    if(
== 10) {}
$end microtime(true);
echo 
"1: ".($end $start)."<br />\n";
unset(
$start$end);

$start microtime(true);
for(
$i 0$i 100000000$i++)
    if(
'foobar' == 10) {}
$end microtime(true);
echo 
"2: ".($end $start)."<br />\n";
unset(
$start$end);

$start microtime(true);
for(
$i 0$i 100000000$i++)
    if(
=== 10) {}
$end microtime(true);
echo 
"3: ".($end $start)."<br />\n";
unset(
$start$end);

$start microtime(true);
for(
$i 0$i 100000000$i++)
    if(
'foobar' === 10) {}
$end microtime(true);
echo 
"4: ".($end $start)."<br />\n";
unset(
$start$end);
?>

===================================
Result (depending on hardware configuration):
1: 16.779544115067
2: 21.305675029755
3: 16.345532178879
4: 15.991420030594
2010-09-14 16:14:09
http://php5.kiev.ua/manual/ru/control-structures.if.html
When using if statements without the curly braces, remember than only one statement will be executed as part of that condition. If you want to place multiple statements you must use curly braces, and not just put them on the same line.

<?php

if (1==0) echo "Test 1."; echo "Test 2";

?>

Whereas some people would expect nothing to be displayed, this piece of code will show: "Test 2".
2010-11-22 06:41:01
http://php5.kiev.ua/manual/ru/control-structures.if.html
You can have 'nested' if statements withing a single if statement, using additional parenthesis.
For example, instead of having:

<?php
if( $a == || $a == ) {
    if( 
$b == || $b == ) {
        if( 
$c == || $ == ) {
             
//Do something here.
       
}
    }
}
?>

You could just simply do this:

<?php
if( ($a==|| $a==2) && ($b==|| $b==4) && ($c==|| $c==6) ) {
   
//do that something here.
}
?>

Hope this helps!
2011-01-06 15:39:11
http://php5.kiev.ua/manual/ru/control-structures.if.html
Автор:
An other way for controls is the ternary operator (see Comparison Operators) that can be used as follows:

<?php
$v 
1;

$r = (== $v) ? 'Yes' 'No'// $r is set to 'Yes'
$r = (== $v) ? 'Yes' 'No'// $r is set to 'No'

echo (== $v) ? 'Yes' 'No'// 'Yes' will be printed

// and since PHP 5.3
$v 'My Value';
$r = ($v) ?: 'No Value'// $r is set to 'My Value' because $v is evaluated to TRUE

$v '';
echo (
$v) ?: 'No Value'// 'No Value' will be printed because $v is evaluated to FALSE
?>

Parentheses can be left out in all examples above.
2011-01-25 12:58:14
http://php5.kiev.ua/manual/ru/control-structures.if.html
Автор:
In addition to the traditional syntax for if (condition) action;
I am fond of the ternary operator that does the same thing, but with fewer words and code to type:

(condition ? action_if_true: action_if_false;)

example

(x > y? 'Passed the test' : 'Failed the test')
2011-02-11 22:30:25
http://php5.kiev.ua/manual/ru/control-structures.if.html
It seems that only numbers can be compared between them but actually an alphabet can be compare too. For example :

<?php
 
// Number comparison
 
$a="C";
 
$b="X";
  if (
$a<$b)
     {
    echo 
$a."is smaller than".$b;
    }               
// Result : C is smaller than X
?>
2012-02-28 11:31:33
http://php5.kiev.ua/manual/ru/control-structures.if.html
Автор:
easy way to execute conditional html / javascript / css / other language code with php if else:

<?php if (condition): ?>

html code to run if condition is true

<?php else: ?>

html code to run if condition is false

<?php endif ?>
2013-05-20 04:02:05
http://php5.kiev.ua/manual/ru/control-structures.if.html
You can also check alphabet characters like this

<?php
// Alphabetical Comparison
 
$a="brian";
 
$b="zebra";
      if (
$a $b){
        echo 
$a." is before ".$b." in the alphabet";
      }
      else{
          echo 
$a." is after ".$b." in the alphabet";
      }
// Result : brian is before zebra in the alphabet
?>
2015-06-04 13:25:57
http://php5.kiev.ua/manual/ru/control-structures.if.html

    Поддержать сайт на родительском проекте КГБ