PHP 7.4.22 Released!

echo

(PHP 4, PHP 5, PHP 7, PHP 8)

echoBir veya daha fazla dizgeyi çıktılar

Açıklama

echo(string ...$ifadeler): void

Tüm değiştirgelerini çıktılar.

echo aslında bir işlev değil bir dil oluşumudur, yani değiştirgelerini yaylı ayraçlar arasına almak gerekmez. Değiştirgeleri, echo anahtar sözcüğünü izleyen, virgüllerle ayrılmış ve parantez içine alınmamış ifadelerden oluşur. Diğer bazı dil oluşumlarının aksine, echo'nun herhangi bir dönüş değeri yoktur, bu nedenle bir ifade bağlamında kullanılamaz.

echo ayrıca kısaltılmış bir sözdizimine de sahiptir. Bir açan PHP etiketinin ardına bir eşit işareti koyup dizgeyi ardına yazmanız yeterlidir. Bu kısa sözdizimi short_open_tag yapılandırma yönergesi iptal edilmiş olsa bile kullanılır. Örnek:

I have <?=$foo?> foo.

print işlevine göre başlıca fark echo'nun çok sayıda değiştirge kabul etmesi ve bir dönüş değerinin olmamasıdır.

Değiştirgeler

ifadeler

Virgüllerle ayrılmış bir veya daha fazla dizge ifadesi. Dizge olmayan değerler, strict_types yönergesi etkin olsa bile dizgeye zorlanır.

Dönen Değerler

Hiçbir değer dönmez.

Örnekler

Örnek 1 - echo örnekleri

<?php
echo "echo için parantez gerekmez";

// Dizgeler ya çoklu değiştirgeler olarak tek tek aktarılır
// ya da birbirlerine eklenip tek bir değiştirge olarak aktarılır
echo 'Bu ''dizge ''çok sayıda''değiştirge ''ile yapıldı.'"\n";
echo 
'Bu ' 'dizge ' 'çok sayıda ' 'değiştirge ' 'birbirine eklenerek yapıldı.' "\n";

// Satırsonu karakteri veya boşluk eklemek gerekmez
// bu iki satır tek satırlık "merhabaDünya" çıktılar
echo "merhaba";
echo 
"Dünya";

// Yukarıdaki ile aynı sonucu verir
echo "merhaba""Dünya";

echo 
"Bu dizge
çok satırlıdır. Satırsonu
karakterleri de çıktılanır."
;

echo 
"Bu dizge\nçok satırlıdır. Satırsonu\nkarakterleri de çıktılanır.";

// Değiştirge bir dizge üreten herhangi bir ifade olabilir
$buda "Buda";
echo 
"Bu da $buda"// Bu da Buda

$meyveler = ["limon""portakal""muz"];
echo 
implode(" ve "$meyveler); // limon ve porakal ve muz

// declare(strict_types=1) kullanılmış olsa bile
// dizge olmayan ifadeler dizgeye zorlanır
echo 7// 42

// echo bir ifade gibi davranmadığından bu ifade geçersizdir
 
($ifade) ? echo 'true' : echo 'false';

 
// Ama bu örnek çalışır:
 
($ifade) ? print 'true' : print 'false'// print de bir dil oluşumudur, ama
                                          // geçerli bir ifadedir, 1 döndürür,
                                          // dolayısıyla bu bağlamda geçerlidir.

// Burada ifade değerlendirildikten sonra echo'ya aktarılmaktadır
echo $some_var 'true''false';
?>

Notlar

Bilginize: Bu bir işlev değil, dil oluşumu olduğundan değişken işlevler kullanılarak çağrılamaz.

Bilginize: - Parantezli kullanım

Tek bir değiştirgeyi parantezlerle çevrelemek bir sözdizimi hatası oluşturmaz ve normal bir işlev çağrısı gibi görünen sözdizimi üretir. Bununla birlikte, bu yanıltıcı olabilir, çünkü parantezler aslında echo sözdiziminin bir parçası değil, değiştirge olarak verilen ifadenin bir parçasıdır.

<?php
echo "hello";
// "hello" basar

echo("hello");
// bu da "hello" basar, çünkü ("hello") geçerli bir ifadedir

echo(2) * 3;
// "9" basar; parantezler 1+2'nin önce değerlendirilip sonra 3 ile
// çarpılmasını sağlar. İfade değerlendirildikten sonra echo'ya
// aktarıldığından echo ifadenin tümünü tek bir değiştirge olarak görür.

echo "hello"" world";
// "hello world" basar

echo("hello"), (" world");
// "hello world" basar; Parantezler ifadenin parçasıdır

echo("hello"" world");
// Bir çözümleme hatası oluşur, çünkü ("hello", " world") geçersiz bir ifadedir
?>

İpucu

echo'ya birden çok değiştirge aktarmak, PHP'deki bitiştirme işlecinin önceliğinden kaynaklanan karışıklıkları önleyebilir. Örneğin, birleştirme işleci üçlü işleçten daha yüksek önceliğe sahiptir ve PHP 8.0.0'dan önce toplama ve çıkarma ile aynı önceliğe sahipti:

<?php
// Önce 'Hello ' . isset($name) ifadesi değerlendirilir,
// sonuç daima true olur, bu bakımdan sadece $name basılır
echo 'Hello ' . isset($name) ? $name 'John Doe' '!';

// Amaçlanan davranış daha fazla parantez gerektirir
echo 'Hello ' . (isset($name) ? $name 'John Doe') . '!';

// PHP 8.0.0 öncesinde, "Sum: 3" yerine "2" basılırdı
echo 'Sum: ' 2;

// Bu kez de parentez eklenerek amaçlanan davranış elde edilebilir
echo 'Sum: ' . (2);

Çok sayıda değiştirge aktarılırsa önceliği devreye sokmak için parantezler gerekmez, çünkü her ifade ayrı değerlendirilir:I

<?php
echo "Hello ", isset($name) ? $name "John Doe""!";

echo 
"Sum: "2;

Ayrıca Bakınız

add a note add a note

User Contributed Notes 3 notes

up
30
pemapmodder1970 at gmail dot com
4 years ago
Passing multiple parameters to echo using commas (',')is not exactly identical to using the concatenation operator ('.'). There are two notable differences.

First, concatenation operators have much higher precedence. Referring to http://php.net/operators.precedence, there are many operators with lower precedence than concatenation, so it is a good idea to use the multi-argument form instead of passing concatenated strings.

<?php
echo "The sum is " . 1 | 2; // output: "2". Parentheses needed.
echo "The sum is ", 1 | 2; // output: "The sum is 3". Fine.
?>

Second, a slightly confusing phenomenon is that unlike passing arguments to functions, the values are evaluated one by one.

<?php
function f($arg){
 
var_dump($arg);
  return
$arg;
}
echo
"Foo" . f("bar") . "Foo";
echo
"\n\n";
echo
"Foo", f("bar"), "Foo";
?>

The output would be:
string(3) "bar"FoobarFoo

Foostring(3) "bar"
barFoo

It would become a confusing bug for a script that uses blocking functions like sleep() as parameters:

<?php
while(true){
  echo
"Loop start!\n", sleep(1);
}
?>

vs

<?php
while(true){
  echo
"Loop started!\n" . sleep(1);
}
?>

With ',' the cursor stops at the beginning every newline, while with '.' the cursor stops after the 0 in the beginning every line (because sleep() returns 0).
up
0
t3tesla at gmail dot com
18 days ago
We can use the 'echo' shortcut syntax with the conditional operator (expr1) ? (expr2) : (expr3)

<?php
$some_var
= 10;
?>
Back to html :
<p class="<?=$some_var>5 ? "class1" : "class2"?>">Some text.</p>

Will give :  <p class="class1">Some text.</p>

<?php
$some_var
= 4;
?>
<p class="<?=$some_var>5 ? "class1" : "class2"?>">Some text.</p>

Will give :  <p class="class2">Some text.</p>
up
-3
mparsa1372 at gmail dot com
4 months ago
The following example shows how to output text with the echo command (notice that the text can contain HTML markup):

<?php
echo "<h2>PHP is Fun!</h2>";
echo
"Hello world!<br>";
echo
"I'm about to learn PHP!<br>";
echo
"This ", "string ", "was ", "made ", "with multiple parameters.";
?>
To Top