3

Je suis nouveau sur PHP. Je suis tombé sur cette syntaxe dans WordPress. Que fait la dernière ligne de ce code?

$page = $_SERVER['REQUEST_URI']; 
$page = str_replace("/","",$page); 
$page = str_replace(".php","",$page); 
$page = $page ? $page : 'default' 
+0

wow! réponses accablantes .. :) merci – jest

+0

duplication possible de [Référence - Que signifie ce symbole en PHP?] (http://stackoverflow.com/questions/3737139/reference-what-does-this-symbol-mean-in- php) – outis

Répondre

7

C'est the ternary operator:

Cette ligne se traduit

if ($page) 
    $page = $page; 
else 
    $page = 'default'; 
+1

Que voulez-vous dire par "l'opérateur conditionnel". Ne voulez-vous pas dire "l'opérateur ternaire" (un opérateur *** ***)? –

+0

J'ai écrit "opérateur ternaire" à l'origine. @Ether l'a édité et l'a changé en "conditionnel". Curieuse. – echo

+0

"l'opérateur ternaire" est ambigu car il peut y en avoir plus d'un. – Ether

2

Cela signifie que si la page $ n'a pas de valeur (ou il est égal à zéro), réglez-le sur 'par défaut'.

1

Plus syntaxe verbeuse de la dernière ligne est:

if ($page) 
{ 
    $page = $page; 
} 
else 
{ 
    $page = 'default'; 
} 
1

Cela signifie que si la variable $ page n'est pas vide alors assigner la variable $ page sur la dernière ligne cette variable ou le mettre à la page « par défaut » prénom.

It is called conditional operator

+0

Il est mal nommé ** l'opérateur ternaire ** où il est juste juste ** un opérateur ternaire. Certes, dans la plupart des langages, c'est le seul opérateur ternaire implémenté mais cela n'exclut pas la création d'autres opérateurs qui prennent 3 arguments. Un langage pourrait par exemple avoir un opérateur pour déclarer des fonctions, un peu comme l'opérateur ':' de Forth, qui fonctionne sur le nom de la fonction, la liste des paramètres et le bloc de code. Ce serait aussi un opérateur ternaire. – slebetman

+0

"Opérateur conditionnel"? Ne voulez-vous pas dire "opérateur ternaire"? –

0

C'est la soi-disant conditional operator. Il fonctionne comme un if-else déclaration, si

$page = $page ? $page : 'default'; 

fait la même chose que

if($page) 
{ 
    $page = $page; 
} 
else 
{ 
    $page = 'default'; 
} 
+0

La référence dit que c'est l'opérateur ternaire (ou un opérateur ternaire?), Un des opérateurs conditionnels.Peux-tu élaborer? –

3

C'est un ternary operation qui ne l'est pas ou existe PHP WordPress spécifique, dans la plupart langauges.

(condition) ? true_case : false_case 

Donc, dans ce cas, la valeur de la page $ sera « par défaut », quand $ page est quelque chose de similaire à false - sinon il reste inchangé.