11

What does the symbol : mean in PHP?

Peter Mortensen
  • 30,738
  • 21
  • 105
  • 131
good_evening
  • 21,085
  • 65
  • 193
  • 298

6 Answers6

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.

dalton
  • 3,656
  • 1
  • 25
  • 25
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.

Felix Kling
  • 795,719
  • 175
  • 1,089
  • 1,143
  • Third place would be the `foreach ( $entry : $list)` thing wouldnt it? – Felix Dec 09 '16 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 Oct 27 '17 at 06:59
  • @Michel: I don’t know about Laravel, sorry. From PHP‘s perspective, `:` is part of a string so it has no special meaning. – Felix Kling Oct 27 '17 at 07: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.

ceejayoz
  • 176,543
  • 40
  • 303
  • 368
3

Shorter if statement:

$val = (condition) ? "condition is true" : "condition is false";
Peter Mortensen
  • 30,738
  • 21
  • 105
  • 131
1

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

Peter Mortensen
  • 30,738
  • 21
  • 105
  • 131
BlueRaja - Danny Pflughoeft
  • 84,206
  • 33
  • 197
  • 283
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.

Darien
  • 3,482
  • 19
  • 35