11

What does the symbol : mean in PHP?

3

6 Answers 6

35

PHP offers an alternative syntax for some of its control structures; namely, if, while, for, foreach, and switch. In each case, the basic form of the alternate syntax is to change the opening brace to a colon (:) and the closing brace to endif;, endwhile;, endfor;, endforeach;, or endswitch;, respectively.

0
21

You also encounter : if you use the alternative syntax for control structures:

<?php
if ($a == 5):
    echo "a equals 5";
    echo "...";
elseif ($a == 6):
    echo "a equals 6";
    echo "!!!";
else:
    echo "a is neither 5 nor 6";
endif;
?>

Or as already mentioned the ternary operator:

$action = (empty($_POST['action'])) ? 'default' : $_POST['action'];

(Examples taken from the documentation)


Edit: Somehow I didn't see that the alternative syntax was already mentioned, must be too tired ;) Anyway, I will leave it as it is, as I think an actual example and a link to the documentation is more helpful than just plain text.

3
  • Third place would be the foreach ( $entry : $list) thing wouldnt it?
    – Felix
    Commented Dec 9, 2016 at 20:02
  • Could you please help me.I'm doubtful about the use of ' : ' in the following context ( Laravel ). ['email' => 'required|email|unique:email,users']
    – Michel
    Commented Oct 27, 2017 at 6:59
  • @Michel: I don’t know about Laravel, sorry. From PHP‘s perspective, : is part of a string so it has no special meaning. Commented Oct 27, 2017 at 7:34
9

I'm guessing you're seeing this syntax:

print ($item ? $item : '');

This is a short form of if/else. The ? is the if, and the : is the else.

3

Shorter if statement:

$val = (condition) ? "condition is true" : "condition is false";
1

As others have posted, you probably are looking at ternary logic.

However, if two of them are together, then it is the scope resolution operator, used for referencing status methods/properties and constants.

1

It can mean a number of things. You may mean the ternary operator, ?:.

Not the answer you're looking for? Browse other questions tagged or ask your own question.