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();
}
?>
Контролни структури
Съдържание
- if
- else
- elseif
- Алтернативен синтаксис за контролни структури
- while
- do-while
- for
- foreach
- break
- continue
- switch
- declare
- return
- require
- include
- require_once
- include_once
Въведение
Всеки PHP скрипт се състои от поредици от инструкции. Инструкция може да бъде задаване на стойност, извикване на функция, цикъл, условен израз или дори инструкция, която не прави нищо (празен израз). Инструкциите обикновено завършват с точка и запетая. В допълнение, инструкциите могат и да бъдат групирани като групата от инструкции се загради във фигурни скоби. Групата от инструкции сама по себе си също представлява инструкция. В тази глава са описани различните видове инструкции.
Контролни структури
wintermute
29-Aug-2007 12:45
29-Aug-2007 12:45
Sinured
01-Aug-2007 11:59
01-Aug-2007 11:59
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()));
?>
dougnoel
05-May-2006 06:29
05-May-2006 06:29
Further response to Niels:
It's not laziness, it's optimization. It saves CPUs cycles. However, it's good to know, as it allows you to optimize your code when writing. For example, when determining if someone has permissions to delete an object, you can do something like the following:
if ($is_admin && $has_delete_permissions)
If only an admin can have those permissions, there's no need to check for the permissions if the user is not an admin.
niels dot laukens at tijd dot com
26-Dec-2004 07:49
26-Dec-2004 07:49
For the people that know C: php is lazy when evaluating expressions. That is, 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 php knows that it will never have to execute the if-block
?>
This comes in nice in situations like this:
<?php
if ( file_exists($filename) && filemtime($filename) > time() )
do_something();
// filemtime will never give an file-not-found-error, since php will stop parsing as soon as file_exists returns FALSE
?>
