Коментарии

For the people that know C: php uses operator short circuit evaluation. That means that as soon as it knows the outcome, it'll stop processing.

<?php
if ( FALSE && some_function() )
    echo 
"something";
   
// some_function() will not be called, since the first operand evaluates to false
?>

This comes in handy for situations like this:

<?php
if ( file_exists($filename) && filemtime($filename) > time() )
   
do_something();
   
// filemtime will never give a file-not-found-error, since php will stop evaluating if file_exists returns false
?>
2004-12-26 09:49:48
http://php5.kiev.ua/manual/ru/language.control-structures.html
Автор:
As mentioned below, PHP stops evaluating expressions as soon as the result is clear. So a nice shortcut for if-statements is logical AND -- if the left expression is false, then the right expression can’t possibly change the result anymore, so it’s not executed.

<?php
/* defines MYAPP_DIR if not already defined */
if (!defined('MYAPP_DIR')) {
   
define('MYAPP_DIR'dirname(getcwd()));
}

/* the same */
!defined('MYAPP_DIR') && define('MYAPP_DIR'dirname(getcwd()));
?>
2007-08-01 14:59:59
http://php5.kiev.ua/manual/ru/language.control-structures.html
Автор:
Sinured: You can do the same thing with logical OR; if the first test is true, the second will never be executed.

<?PHP
if (empty($user_id) || in_array($user_id$banned_list))
{
exit();
}
?>
2007-08-29 15:45:35
http://php5.kiev.ua/manual/ru/language.control-structures.html
Автор:
CONTROL STRUCTURE -- BOOLEAN REQUIRED

If you are not sure what will work in your IF statements, try DISECTING your variables. Below I've written three (3) empty CLASS DEFINITIONS (Point, Dimension, and Rectangle), and declared an array called $items that holds all the PHP types you can imagine -- booleans, strings, empty strings, integers, floats, null, arrays, empty arrays, and objects too. The rest of the code really chews up the current $item and spits it out for lunch... Try running this code so you can see the HTML TABLE that is created -- it'll be worth your while.

<?php

class Point { }
class 
Dimension { }
class 
Rectangle { }

$items = array(truefalsenull230, -264.210.0, -3.76,
 
'hello''', array(123), array(''''''), array(),
  new 
stdClass(), new Point(), new Dimension(), new Rectangle());

echo 
'<table cellpadding="4" border="1">
  <tr>
    <th>syntax</th>
    <th>value</th>
    <th>type</th>
    <th>empty</th>
    <th>boolean</th>
  </tr>' 
"\n";

foreach(
$items AS $item)
{
 
$booleanValue = (boolean)$item;
 
$empty = (empty($item) ? 'EMPTY' '&nbsp;');
 
$type gettype($item);
 
$syntax 'if((boolean)';

 
$val;

  if(
$type == boolean)
  {
   
$val = ($booleanValue 'true' 'false');
   
$syntax .= ($val ')');
  }
  else if(
$type == 'NULL')
  {
   
$val 'null';
   
$syntax .= 'null)';
  }
  else if(
$type == double && !$booleanValue)
  {
   
$val '0.0';
   
$syntax .= '0.0)';
  }
  else if(
$type == string)
  {
   
$val '\'' $item '\'';
   
$syntax .= ($val ')');
  }
  else if(
$type == 'array')
  {
   
$val $item;
   
$syntax .= '$array)';
  }
  else if(
$type == 'object')
  {
   
$val get_class($item);
   
$syntax .= ('$' strtolower($val) . ')');
  }
  else
  {
   
$val $item;
   
$syntax .= ($val ')');
  }

  echo 
'  <tr style="color: ' . ($booleanValue '#006600' '#880000') . ';">
    <td><code>' 
$syntax '</code></td>
    <td>' 
$val '</td>
    <td>' 
$type '</td>
    <td>' 
$empty '</td>
    <td>' 
. ($booleanValue 'TRUE' 'FALSE') . '</td>
  </tr>' 
"\n";
}

echo 
'</table>' "\n";

?>

Looking at the HTML output: notice that even integers and floats with a value of zero are considered EMPTY, and all that are EMPTY are FALSE boolean values. And take a gander at the boolean type with a false value... somebody is covering there bases!
2012-05-23 04:28:01
http://php5.kiev.ua/manual/ru/language.control-structures.html
Автор:
This is list is missing a link for:
try ... catch ... finally
blocks. 

You will find this critical language construct hidden away in the "Exceptions" chapter.

And, even though being very verbose and admittedly having useful code examples, that Exceptions chapter actually never formally defines the syntax of the catch block. Per example, if we don't care about accessing the Exception object, one might attempt:

   try { ... } catch { ... } ...

or even:

   try { ... } catch() { ... } ...

Apparently the only acceptable syntax is:

   try { ... } 
    catch( \Exception | OptionalMyExceptions-1 | ... $exception_instance ) { ... } 
    /* optional additional catch blocks */
    catch( ... ) { ... }
    ...
    /* optional finally block */
    finally { ... }
2017-08-05 00:52:05
http://php5.kiev.ua/manual/ru/language.control-structures.html

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