PHP 8.4.2 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 bağımsız değişkenlerini çıktılar.

echo aslında bir işlev değil bir dil oluşumudur, yani bağımsız değişkenlerini yaylı ayraçlar arasına almak gerekmez. Bağımsız değişkenleri, 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 bağımsız değişken kabul etmesi ve bir dönüş değerinin olmamasıdır.

Bağımsız Değişkenler

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 bağımsız değişkenler olarak tek tek aktarılır
// ya da birbirlerine eklenip tek bir bağımsız değişken olarak aktarılır
echo 'Bu ', 'dizge ', 'çok sayıda', 'bağımsız değişken ', 'ile yapıldı.', "\n";
echo
'Bu ' . 'dizge ' . 'çok sayıda ' . 'bağımsız değişken ' . '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.";

// Bağımsız değişken 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 6 * 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 veya isimli bağımsız değişkenler kullanılarak çağrılamaz.

Bilginize: - Parantezli kullanım

Tek bir bağımsız değişkeni 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, bağımsız değişken 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(1 + 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 bağımsız değişken 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 bağımsız değişken 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: ' . 1 + 2;

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

Çok sayıda bağımsız değişken 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: ", 1 + 2;

Ayrıca Bakınız

add a note

User Contributed Notes 1 note

up
36
pemapmodder1970 at gmail dot com
7 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).
To Top