PHP fonksiyonlarında return ve echo farkı, değerin nasıl kullanılacağıyla ilgilidir. echo bir değeri o anda ekrana gönderir. return ise fonksiyonun ürettiği sonucu çağıran koda geri verir ve bu sonuç daha sonra bir değişkende saklanabilir veya başka bir işlemde kullanılabilir.
echo ekrana çıktı gönderir, return ise fonksiyon sonucunu çağıran koda geri verir. Bu nedenle yalnızca kullanıcıya bilgi göstermek istediğinde echo, hesaplanan sonucu programın başka bir bölümüne aktarmak istediğinde ise return daha uygun olur.
echo ve return arasındaki temel fark nedir?
echo, fonksiyon çalıştığı sırada değeri doğrudan çıktıya gönderir. Fonksiyonun ürettiği sonucu daha sonra kullanmak için ayrıca bir değer saklamaz. Bu yaklaşım, bir mesajı veya sonucu o anda ekrana yazdırmak için pratiktir.
return ise fonksiyonun çalışmasını sonlandırarak bir değeri çağrıldığı yere gönderir. Dönen değer henüz ekrana yazdırılmış olmaz. Bu değeri ekranda göstermek için sonradan echo kullanılabilir.
<?php
function ekranaYaz($sayi) {
echo $sayi * 2;
}
function ikiKatiniDondur($sayi) {
return $sayi * 2;
}
echo "echo sonucu: ";
ekranaYaz(4);
echo "<br>";
$sonuc = ikiKatiniDondur(4);
echo "return sonucu: " . $sonuc;
?>
Bu kod tarayıcıda şu çıktıyı oluşturur:
echo sonucu: 8
return sonucu: 8
İki fonksiyon da aynı hesabı yapar. İlk fonksiyon sonucu kendi içinde ekrana gönderir. İkinci fonksiyon ise 8 değerini dışarı aktarır. Bu değer daha sonra $sonuc değişkenine atanarak ekrana yazdırılmıştır.
Parametre, fonksiyon çağrısı ve değişkene atama nasıl çalışır?

Fonksiyon tanımında parantez içinde yazılan değişken, fonksiyona dışarıdan veri taşır. Örnekteki $sayi bir parametredir. Fonksiyon çağrılırken verilen 4 değeri bu parametreye aktarılır.
- Parametre:
function ikiKatiniDondur($sayi)satırındaki$sayi, fonksiyonun kullanacağı veriyi temsil eder. - Fonksiyon çağrısı:
ikiKatiniDondur(4)ifadesi, fonksiyonu çalıştırır ve4değerini parametreye gönderir. - Dönüş değeri: Fonksiyon içindeki
return $sayi * 2;satırı, hesaplanan8değerini çağıran koda geri verir. - Değişkene atama:
$sonuc = ikiKatiniDondur(4);satırı, dönen8değerini$sonuciçinde saklar.
echo kullanılan fonksiyonda ise değer doğrudan çıktıya gider. return kullanılan fonksiyonda sonuç ekrana otomatik olarak yazılmaz. Örneğin ikiKatiniDondur(4); çağrısı sonucu hesaplar, fakat değer bir değişkene atanmaz veya echo ile yazdırılmazsa kullanıcı bu sonucu göremez.
Aynı işi echo ve return ile yapan kısa PHP örnekleri
echo, fonksiyonun ürettiği metni doğrudan ekrana gönderir. Fonksiyonu çağıran satır, ayrıca kullanılabilecek bir değer almaz.
<?php
function selamlaEcho($isim) {
echo "Merhaba, " . $isim . "!";
}
selamlaEcho("Deniz");
Beklenen çıktı: Merhaba, Deniz!
Aynı selamlama işlemi return ile yapıldığında fonksiyon metni ekrana yazdırmaz. Metni çağıran koda teslim eder. Ekrana yazdırma işini dışarıdaki echo üstlenir.
<?php
function selamlaReturn($isim) {
return "Merhaba, " . $isim . "!";
}
echo selamlaReturn("Deniz");
Beklenen çıktı: Merhaba, Deniz!
İki kod ekranda benzer sonuç üretir. Ancak ilkinde işlem doğrudan görüntü oluşturur, ikincisinde ise metin önce bir değer olarak döner. Bu değer daha sonra değişkende tutulabilir, başka bir fonksiyona gönderilebilir veya farklı bir işlemde kullanılabilir.
return edilen değer başka işlemlerde nasıl kullanılır?

return ile dönen sonuç, fonksiyon çağrısının yerine geçer. Bu nedenle sonucu bir değişkene atayabilir, matematiksel işlemde kullanabilir, başka bir fonksiyona gönderebilir veya metinle birleştirebilirsin.
<?php
function topla($a, $b) {
return $a + $b;
}
function ikiKatiniAl($sayi) {
return $sayi * 2;
}
function metneEkle($deger) {
return "Sonuç: " . $deger;
}
$toplam = topla(4, 3);
$hesap = ikiKatiniAl($toplam);
echo metneEkle($hesap);
Beklenen çıktı: Sonuç: 14
Burada topla() fonksiyonunun sonucu $toplam değişkeninde tutulur. Bu değer ikiKatiniAl() fonksiyonuna gönderilir, ardından oluşan sayı metinle birleştirilerek ekrana yazdırılır. echo ile üretilen görüntü ise çağıran koda aynı biçimde bir değer olarak aktarılmaz.
return, koşula göre farklı sonuçlar döndürmek için de kullanılabilir:
<?php
function sinavDurumu($puan) {
if ($puan >= 50) {
return "Geçti";
} else {
return "Geliştirilmeli";
}
}
$sonuc = sinavDurumu(72);
echo $sonuc;
Beklenen çıktı: Geçti
Fonksiyon, puan 50 veya üzerindeyse "Geçti", daha düşükse "Geliştirilmeli" değerini döndürür. Çağıran kod ise yalnızca $sonuc değişkeniyle çalışır ve kararın içeride nasıl verildiğini bilmek zorunda kalmaz.
echo ve return yanlış kullanıldığında nasıl hata ayıklanır?
echo değeri o anda ekrana gönderir, return ise değeri fonksiyonu çağıran koda taşır. Bu ayrım karıştığında boş ekran, beklenmeyen çıktı sırası veya değişkende kullanılabilir sonuç bulunmaması görülebilir.
- Fonksiyon çağrılıyor mu? Fonksiyon tanımını yazmak tek başına onu çalıştırmaz. Fonksiyonun gerçekten çağrıldığını kontrol et.
- Parametre doğru aktarılıyor mu? Parametrelerin sırasını, gönderilen değişkenleri ve bu değişkenlerin değerlerini incele.
echodoğru yerde mi? Fonksiyon içindekiecho, fonksiyon çağrıldığı anda çalışır. Bu nedenle dışarıdaki başka çıktılarla sırası karışabilir.returnçağıran koda ulaşıyor mu? Koşul bloğu, erken birreturnveya başka bir hata nedeniyle beklenen satıra gelinip gelinmediğini kontrol et.- Sonuç değişkene atanmış mı? Dönen değeri kullanmak için
$sonuc = fonksiyon();gibi bir atama yapılmalıdır. - Tüm koşul dalları değer döndürüyor mu? Yalnızca bir koşulda
returnvarsa diğer dalda beklenen sonuç yerineNULLoluşabilir.
<?php
function durum($puan) {
if ($puan >= 50) {
return "Geçti";
}
return "Kaldı";
}
$sonuc = durum(45);
echo $sonuc;
?>
Beklenen çıktı Kaldı olur. Fonksiyonun içinde yalnızca return kullanılsaydı değer çağıran koda gider, fakat ayrıca yazdırılmadığı için ekranda görünmezdi.
Hata ayıklarken çağrının gerçekleştiğini görmek için geçici olarak echo "Çağrı yapıldı"; ekleyebilirsin. Bu yalnızca akışın ilgili noktaya geldiğini gösterir. Dönen sonucun türünü ve değerini incelemek için var_dump($sonuc); kullanmak daha uygundur. Böylece ekrana yazdırılan metin ile fonksiyonun ürettiği sonucu birbirinden ayırabilirsin.
Hangi durumda echo, hangi durumda return seçilmeli?
Seçimi, değerin kime ve ne zaman lazım olduğuna göre yapabilirsin. Kullanıcıya doğrudan bir mesaj göstermek için echo, değeri saklamak, hesaplamaya katmak veya başka bir kod bloğunda kullanmak için return daha uygundur.
| İhtiyaç | Tercih edilecek yapı | Gerekçe | Kısa örnek kullanım |
|---|---|---|---|
| Kullanıcıya tek seferlik çıktı vermek | echo |
Değeri fonksiyon çağrıldığı anda gösterir. | echo "İşlem tamamlandı"; |
| Değeri saklamak veya yeniden kullanmak | return |
Çağıran kod sonucu değişkene alabilir ve başka işlemlerde kullanabilir. | $toplam = hesapla(); |
| Koşula göre farklı sonuç üretmek | return |
Fonksiyon sonucu üretir, yazdırma kararını çağıran kod verir. | $mesaj = durum($puan); |
Bu ayrımı pekiştirmek için PHP ve programlama konularındaki diğer yazıları da inceleyebilirsin.
- Yalnızca o anda metin göstereceksen
echokullan. - Değeri saklayacak, hesaplayacak veya başka bir fonksiyona göndereceksen
returnkullan. - Koşullu sonuçlarda her dalı beklenen bir değer döndürecek şekilde tamamla.
Sık Sorulan Sorular
PHP'de return kullanınca değer otomatik olarak ekrana yazdırılır mı?
Hayır. return değeri çağıran koda gönderir ve fonksiyondan çıkış yapar. Ekranda görmek için dönen sonucu ayrıca echo ile yazdırman veya başka bir şekilde kullanman gerekir.
Echo ile yazdırılan değer neden değişkene atanıp başka bir işlemde kullanılamaz?
echo değeri doğrudan çıktıya gönderir, çağıran koda işlenebilir bir sonuç bırakmaz. Bu nedenle $sonuc = echo ...; geçerli bir atama biçimi değildir. Yeniden kullanım gereken durumda fonksiyonun return ile değer döndürmesi gerekir.
Aynı PHP fonksiyonunda hem echo hem return kullanılabilir mi?
Evet. Fonksiyon önce echo ile bir metin gösterebilir, ardından return ile değer gönderebilir. Ancak return çalıştığı anda fonksiyon sona erer ve sonraki kodlar çalışmaz.
Özetle, echo çıktıyı üretir, return sonucu taşır. İhtiyacın ekrana anlık bilgi vermek mi yoksa kullanılabilir bir değer üretmek mi olduğuna bakarak seçim yapabilirsin.