2011-01-20 21 views
16

Powiel możliwe: What is “:” in PHP?Co oznacza ":" w PHP?

Czego : oznaczać w następujący kod PHP?

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

Jest to alternatywny składni jakiegoś języka skonstruować tak jakby podczas foreach –

+3

trudno znaleźć, ale kilka wyjaśnień tutaj: [Reference - Co oznacza ten symbol oznacza w PHP? ] (http://stackoverflow.com/questions/3737139/reference-what-does-this-symbol-mean-in-php) – mario

+0

Wow ... dziękuję Mario :) –

Odpowiedz

30

Nazywa się Alternative Syntax For Control Structures. Po jakimś czasie powinieneś mieć endwhile;. Zasadniczo pozwala od razu pominąć nawiasy klamrowe, aby wyglądało "ładniej" ...

Jeśli chodzi o edycję, nazywa się to Ternary Operator (jest to trzecia sekcja). Zasadniczo jest to skrót zadania.

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

jest taka sama, jak mówią (Tylko krótszy):

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

Materia smaku ... – Shikiryu

+0

Dziękuję bardzo, Maxell! –

+3

@Shikiryu: Zgadzam się całkowicie. Osobiście nie dbam o to (wolałbym raczej aparat ortodontyczny), ale jest on całkowicie poprawny i akceptowalny do użycia (i wielu ludzi to lubi). – ircmaxell

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

Huh? Podkreślić oczywistość? – ircmaxell

+1

oczywiste pytania = oczywiste odpowiedzi? –

+2

Ale twój kod jest nieprawidłowy, ponieważ dwukropek nie wskazuje początku pętli pojedynczej linii, jest to początek alternatywnej składni, więc aby zakończyć pętlę potrzebujesz 'endwhile;'. Więc po prostu skorygowałeś dokładny kod PO opublikowany pod różnymi nazwami i spodziewałeś się, że będzie to wyjaśnienie tego, co się dzieje? – ircmaxell

8

Jest to przykład wymienione w documentation for while że wyjaśnia składnię:

Podobnie jak w instrukcji if, ty może grupować wiele instrukcji w obrębie tej samej pętli while, otaczając grupę instrukcji nawiasami klamrowymi lub stosując alternatywną składnię:

while (expr): 
    statement 
    ... 
endwhile; 

Odpowiedź over here wyjaśnia to tak:

To (:) operatora stosowany głównie w osadzonym kodowania php i html.

Za pomocą tego operatora można uniknąć stosowania nawiasów klamrowych. Ten operator zmniejsza złożoność wbudowanego kodowania. Można użyć tego (:) operatorowi if, while, do, foreach i więcej ...

bez (:) operatora

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

Z (:) operatora

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

Nieprawidłowe stackoverflow ucieczkę oon końcową część tego pytania. – Kzqai

+0

Ups, thanks ... – aioobe

5

Ta notacja ma na celu uniknięcie stosowania nawiasów klamrowych - zazwyczaj podczas osadzania PHP w HTML - i jest równoważna z:

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

Mówi się, że gdy have_posts() jest true, uruchom the_post().

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

Czy warunek nie jest "zdanie jest prawdziwe"? – DOK

+0

Tak, zauważyłem moją wadę, przepraszam; o) – raRaRa

6

to jak:

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