- PHP if else
- Introduction to PHP if-else statement
- PHP if…else statement in HTML
- Summary
- PHP Variable Assignment Within If Statement
- Want to know more? Need some help?
- Support Us!
- Comments
- Add new comment
- Related Content
- Generating Histogram Colour Analysis Graphs From Images In PHP
- PHP:CSI — To Switch, Or Not To Switch?
- Drupal 9: Generating Header Images For Pages Of Content Using PHP
- Using PSR-4 With Composer
- Generating A PDF From A Web Page Using PHP And Chrome
- PHP:CSI — Date Is Less Than One Month Ago
PHP if else
Summary: in this tutorial, you’ll learn about the PHP if. else statement that executes a code block when a condition is true or another code block when the condition is false .
Introduction to PHP if-else statement
The if statement allows you to execute one or more statements when an expression is true :
if ( expression ) < // code block >
Code language: HTML, XML (xml)
Sometimes, you want to execute another code block if the expression is false . To do that, you add the else clause to the if statement:
if ( expression ) < // code block > else < // another code block >
Code language: HTML, XML (xml)
In this syntax, if the expression is true , PHP executes the code block that follows the if clause. If the expression is false , PHP executes the code block that follows the else keyword.
The following flowchart illustrates how the PHP if-else statement works:
The following example uses the if. else statement to show a message based on the value of the $is_authenticated variable:
$is_authenticated = false; if ( $is_authenticated ) < echo 'Welcome!'; > else < echo 'You are not authorized to access this page.' >
Code language: HTML, XML (xml)
In this example, the $is_authenticated is false . Therefore, the script executes the code block that follows the else clause. And you’ll see the following output:
You are not authorized to access this page.
Code language: JavaScript (javascript)
PHP if…else statement in HTML
Like the if statement, you can mix the if. else statement with HTML nicely using the alternative syntax:
if ( expression ): ?> else: ?> endif ?>
Code language: HTML, XML (xml)
Note that you don’t need to place a semicolon ( ; ) after the endif keyword because the endif is the last statement in the PHP block. The enclosing tag ?> automatically implies a semicolon.
The following example uses the if. else statement to show the logout link if $is_authenticated is true . If the $is_authenticated is false , the script shows the login link instead:
html>
html lang="en"> head> meta charset="UTF-8"> title>PHP if Statement Demo title> head> body> $is_authenticated = true; ?> if ($is_authenticated) : ?> a href="#">Logout a> else: ?> a href="#">Login a> endif ?> body> html>Code language: HTML, XML (xml)
Summary
PHP Variable Assignment Within If Statement
Note: This post is over two years old and so the information contained here might be out of date. If you do spot something please leave a comment and we will endeavour to correct.
The usual practice when checking for the return value of functions is to run the function and store the value in a variable, and then test that variable. Here is an example of that process using the strstr() function.
This code will output «bool(false)» as that was the return value of the strstr() function.
There is another way to write the same code within a single if statement. The following example assigns the variable and checks the return value in a single line of code.
This code will output «bool(false)» again as this has the same function as the previous example.
There is one problem with assigning variables in this way, and this is that you can only do one. If you try to assign more than one variable at a time you will find that everything but the final variable will turn out to be the outcome of the boolean comparison. Take the following example, which uses the same $string variable as the other examples.
The output of this code will be as follows:
The first two comparisons come out as true and so $var1 and $var2 are assigned boolean values of true. The final comparison is the only one that is assigned the expected value. This might be a bug in PHP, but as this is a non-standard way of assigning variables I don’t think many people have come across it.
Phil is the founder and administrator of #! code and is an IT professional working in the North West of the UK. Graduating in 2003 from Aberystwyth University with an MSc in Computer Science Phil has previously worked as a database administrator, on an IT help desk, systems trainer, web architect, usability consultant, blogger and SEO specialist. Phil has lots of experience building and maintaining PHP websites as well as working with associated technologies like JavaScript, HTML, CSS, XML, Flex, Apache, MySQL and Linux.
Want to know more? Need some help?
Let us help! Hire us to provide training, advice, troubleshooting and more.
Support Us!
Please support us and allow us to continue writing articles.
Comments
Submitted by James Bower on Mon, 09/07/2009 — 21:17
I dare say the last example is correct behaviour. This is what variables are actually assigned. . $var1 = (strstr($string, ‘a’) && false !== $var2 = strstr($string, ‘b’) && false !== $var3 = strstr($string, ‘c’)) . $var2 = (strstr($string, ‘b’) && false !== $var3 = strstr($string, ‘c’)) to get expected behaviour all one needs is enclosing assignments within (). if ( false !== ($var1 = strstr($string, ‘a’)) && false !== ($var2 = strstr($string, ‘b’)) && false !== ($var3 = strstr($string, ‘c’))) < var_dump($var1, $var2, $var3); >also by doing that — in theory — you’re helping compiler (for tiny speedup) so it doesn’t need to find out operator precedence, just eval from insidemost statement(s).
Submitted by Mirek Suk on Tue, 09/28/2010 — 12:08
Thanks for that Mirek, I did wander what was going on but kind of forgot about this article once I had published it. I really appreciate the input 🙂
Submitted by philipnorton42 on Wed, 09/29/2010 — 08:56
I had done this in the past successfully but have since forgotten the exact syntax. Thanks for this, it helped me tremendously.
Submitted by Jim on Sun, 11/07/2010 — 23:09
Submitted by Frank on Mon, 05/02/2011 — 17:52
Submitted by Vishal on Sun, 05/17/2015 — 09:24
This is absolutely terrible practice to use this in your code. It is also against generally accepted PSR standards: https://www.php-fig.org/psr/psr-2/#23-linesas it is combining 2 statements (declaration statement and expression statement) into one line.
Submitted by Jesus on Tue, 03/20/2018 — 14:55
@Jesus Yes. I completely agree. I always split out the assignment operators from if statements. To be honest I’m not sure where I got this code orignally, but I think I found it in someone elses code that I had to alter at the time. Trying to figure out that mess at the time was a real pain, but I came across this strange behaviour and thought I would post about it.
Submitted by philipnorton42 on Tue, 03/20/2018 — 15:19
A gotcha worth highlighting, assigning a 0 is of course a falsy, so you can work around it as follows where NULL is returned when we really want to exit, and not on 0.
Submitted by Russ on Fri, 05/31/2019 — 18:18
Hi, I need help with below code
How to create variable with if multiple statement in php and print
if($payment_mode == "stripe") < echo "Stripe";>if($payment_mode == "bank")< echo "Bank";>';
Submitted by Sam on Fri, 05/15/2020 — 21:30
For fixed payment types, you may be better off to assign an array with the options, with the code as key, and display name as value. That array could be filled from a database query on payment types allowed, which would then pick up when you add a new option, you don’t then have to re-code so much.
'Cash on Delivery', 'stripe'=>'Stripe', 'bank'=>'Bank' ); $selected_payment_option = $paymentTypes[$userPaymentSel];
That has no input validation etc, but might be a start.
Submitted by Peter H on Fri, 06/05/2020 — 12:24
Add new comment
Related Content
Generating Histogram Colour Analysis Graphs From Images In PHP
If you’ve ever looked at the settings in a digital camera, or have experience with image processing programs like GIMP, then you may have seen a colour histogram. This is a simple graph that shows the amount of different shades of colour are present in the image.
PHP:CSI — To Switch, Or Not To Switch?
I was writing unit tests for a API mapping function recently and came across this interesting issue. The code I was writing tests for was in a legacy codebase that I was making changes to, and it made sense to have some unit tests in there before I started work to ensure everything worked before and after.
Drupal 9: Generating Header Images For Pages Of Content Using PHP
Embedding image within pages of content helps both within the design of the page and when shared on social media. If you set up meta tags to point at a particular image then that image will appear when the page is shared on social media. This makes your page stand out more.
Using PSR-4 With Composer
The PHP Standards Recommendations (called PSR) are a set of standards that aim to make certain aspects of working with PHP easier.
Generating A PDF From A Web Page Using PHP And Chrome
Generating a PDF document from a web page through PHP can be problematic. It’s often something that seems quite simple, but actually generating the document can be difficult and time consuming.
PHP:CSI — Date Is Less Than One Month Ago
Working with logic surrounding dates can sometimes be difficult and it’s fairly common to come across really subtle date and time based bugs.
I was recently shown a bug in a PHP application that looks like it should be working at face value, but doesn’t actually produce the correct result.