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