2011-01-20 18 views
16

Eventuali duplicati: What is “:” in PHP?Cosa significa ":" in PHP?

Cosa significa il : significa nel seguente codice PHP?

<?php 
    while (have_posts()) : the_post(); 
?> 
+0

questa è la sintassi alternativa di qualche lingua costruire come se mentre foreach –

+3

Difficile da trovare, ma alcune spiegazioni qui: [Riferimento - Che cosa significa questo simbolo significa in PHP? ] (http://stackoverflow.com/questions/3737139/reference-what-does-this-symbol-mean-in-php) – mario

+0

Wow ... grazie Mario :) –

risposta

30

Si chiama Alternative Syntax For Control Structures. Dovresti avere un endwhile; da qualche parte. Fondamentalmente, consente di omettere le parentesi graffe {} da un momento all'altro per renderlo più "carino" ...

Per quanto riguarda la modifica, si chiama Ternary Operator (è la terza sezione). Fondamentalmente si tratta di una stenografia di assegnazione.

$foo = $first ? $second : $third; 

è lo stesso che dire (solo più breve):

if ($first) { 
    $foo = $second; 
} else { 
    $foo = $third; 
} 
+0

Questione di gusti ... – Shikiryu

+0

Grazie mille, Maxell! –

+3

@Shikiryu: sono completamente d'accordo. Personalmente non mi interessa (preferisco avere le parentesi graffe), ma è perfettamente valido e accettabile da usare (e molte persone lo preferiscono). – ircmaxell

-2
while(expression = true) : run some code ; 
+1

Eh? Dichiarare l'ovvio molto? – ircmaxell

+1

domande ovvie = risposte ovvie? –

+2

Ma il tuo codice è sbagliato, poiché i due punti non indicano l'inizio di un loop di una singola riga, è l'inizio della sintassi alternativa, quindi avrai bisogno di un 'endwhile ;, da qualche parte per terminare il ciclo. Quindi hai appena rideterminato il codice esatto che l'OP ha pubblicato con nomi diversi e ti aspetti che sia una spiegazione di cosa sta succedendo? – ircmaxell

8

c'è un esempio elencato nella documentation for while che spiega la sintassi:

Come con l'istruzione if, si può raggruppare più istruzioni all'interno dello stesso ciclo while circondando un gruppo di istruzioni con parentesi graffe o utilizzando la sintassi alternativa:

while (expr): 
    statement 
    ... 
endwhile; 

Una risposta over here spiega in questo modo:

Questo (:) operatore in gran parte utilizzato nella codifica integrata di PHP e HTML.

Utilizzando questo operatore è possibile evitare l'uso di parentesi graffa. Questo operatore riduce la complessità nella codifica incorporata. È possibile utilizzare questo (:) all'operatore se, while, for, foreach e molto altro ancora ...

Senza (:) operatore

<body> 
<?php if(true){ ?> 
<span>This is just test</span> 
<?php } ?> 
</body> 

Con (:) operatore

<body> 
<?php if(true): ?> 
<span>This is just test</span> 
<?php endif; ?> 
</body> 
+0

Stackoverflow di escape inappropriato sulla parte finale di questa domanda. – Kzqai

+0

Oops, grazie ... – aioobe

5

Questa notazione serve a evitare l'uso di parentesi graffe, generalmente quando si incorpora PHP in HTML, ed è equivalente a:

while (have_posts()) 
{ 
    the_post(); 
} 
3

Sta dicendo che have_posts() è true eseguito the_post().

1
while (expression is true : code is executed if expression is true) 
+0

Non è "la frase è vera" la condizione? – DOK

+0

Sì, ho notato il mio difetto, mi dispiace; o) – raRaRa

6

è come:

<?php 
while(have_posts()) { 
    the_post(); 
} 
?>