
Daha sonraki işlemler için bir fonksiyonun içindeki verileri dışarı almak için öncelikle fonksiyon parametrelerini kullanırız. Benzer şekilde, işlevin dışındaki işlenmiş verilere erişmek için bir PHP işlevinden değerler döndürürüz. PHP’de bir dönüş değeri olan veya olmayan işlevleri tanımlayabilirsiniz.
PHP’de bir fonksiyonun birden fazla parametresi olabilirken, birden fazla dönüş ifadesine sahip olması mümkün değildir. Bu derste size PHP’de bir fonksiyondan birden çok değer döndürmeyi göstereceğim.
PHP’de Döndürme İfadeleri
PHP’deki işlevler isteğe bağlı bir işleve sahip olabilir. return
Beyan. Bir işlevin içinden çağrıldığında, bir geri dönüş ifadesi, herhangi bir başka kodun yürütülmesini hemen durdurur. Bu aynı zamanda diğer iade ifadelerini de içerir. İşte bir örnek:
<?php function multiple_returns($a, $b) { $x = 2*$a; $y = 3*$b; return $x; if($y%3 == 0) { echo "Y is: ".$y; } return $y; } $m = 0; $n = 0; $m = multiple_returns(5, 18); // list($m, $n) = multiple_returns(5, 18); // Outputs: Values are: 10 and 0 echo "Values are: ".$m." and ".$n; ?>
Yukarıdaki kodu çalıştırmanın, değeri hakkındaki ifadeyi yansıtmadığını unutmayın. $y
. Bunun nedeni, işlevin ilk dönüş ifadesinden sonra yürütmeyi durdurmasıdır. Kullandığımız hattın yorumunu kaldırırsanız list()
değişken değerler atamak için $m
ve $n
olacak NULL
çünkü list()
yalnızca dizilerle çalışır ve işlev yalnızca bir sayı döndürür.
Birden Çok Değer Döndürmek İçin Bir Dizi Kullanma
Bir return ifadesinin herhangi bir değer türü döndürebileceğini biliyoruz. Bu nedenle, gerçekten döndürmek istediğimiz tüm değerleri içerecek bir dizi döndürmek için de kullanabiliriz. Birden çok değer döndürmek için yukarıdaki örneği aşağıdaki gibi yeniden yazabiliriz:
<?php function multiple_returns($a, $b) { $x = 2*$a; $y = 3*$b; return [$x, $y]; } list($m, $n) = multiple_returns(5, 18); // Outputs: Values are: 10 and 54 echo "Values are: ".$m." and ".$n; ?>
PHP perspektifinden, hala tek bir değer döndürüyorsunuz, ancak bu tek değer, birden çok başka değer içerebilen bir dizidir. Bu, bir işlev tarafından birden çok değerin döndürülmesini simüle etmenin PHP’deki en kolay yollarından biridir.
Yukarıdaki örnekte sadece iki değer döndürüyoruz. Ancak, daha fazla değer söz konusu olduğunda işler biraz zorlaşabilir çünkü döndürülen değerlerin doğru sırasını aklınızda tutmanız gerekir.
PHP 7.1’den başlayarak, kullanabilirsiniz list()
ilişkisel diziler ile. Bu, öğeleri döndürdüğünüz sıranın atanan değerleri etkilemeyeceği anlamına gelir. İşte bir örnek:
<?php function multiple_returns($a, $b) { $x = 2*$a; $y = 3*$b; return ['m' => $x, 'n' => $y]; } list('m' => $m, 'n' => $n) = multiple_returns(5, 18); // Values are: 10 and 54 echo "Values are: ".$m." and ".$n; list('n' => $n, 'm' => $m) = multiple_returns(5, 18); // Values are: 10 and 54 echo "Values are: ".$m." and ".$n; ?>
değişkenler olduğunu görebilirsiniz $m
ve $n
her iki durumda da aynı değerleri alın çünkü değerler artık sayısal dizinler yerine tuşlara göre atanıyor.
kullanmana bile gerek yok list()
PHP 7.1’den itibaren, çünkü PHP artık sözdizimini yok etmeyi destekliyor. Önceki örneği şu şekilde yeniden yazabiliriz:
<?php function multiple_returns($a, $b) { $x = 2*$a; $y = 3*$b; return ['m' => $x, 'n' => $y]; } ['m' => $m, 'n' => $n] = multiple_returns(5, 18); // Values are: 10 and 54 echo "Values are: ".$m." and ".$n; ['n' => $n, 'm' => $m] = multiple_returns(5, 18); // Values are: 10 and 54 echo "Values are: ".$m." and ".$n; ?>
Birden Çok Değer Döndürmek İçin Bir Nesne Kullanma
Bir PHP işlevinden birden çok değer döndürmenin başka bir yolu da bir nesne döndürmektir. Public üye değişkenleri kullanarak farklı özelliklere sahip bir sınıf tanımlayabiliriz. Bu tekniğin bir dezavantajı, daha fazla kod yazmanız gerekeceğinden, sınıfın birden çok örneğini depolamak için daha fazla bellek tüketecektir. Avantajı, aynı değişken setini birden fazla yerde kullanabilmenizdir.
<?php class ValueStore { public $m; public $n; } function multiple_returns_class($a, $b) { $my_values = new ValueStore(); $my_values->m = 2*$a; $my_values->n = 3*$b; return $my_values; } $values = multiple_returns_class(5, 18); // Values are: 10 and 54 echo "Values are: ".$values->m." and ".$values->n; ?>
Gördüğünüz gibi, basitçe bir nesne oluşturarak ve değerleri onun çeşitli özelliklerine atayarak, fonksiyondan birden çok değeri başarılı bir şekilde çıkarabildik.
Son düşünceler
Bu öğreticide, PHP’nin bir işlevden doğrudan birden çok değer döndürmenize izin vermediğini öğrendiniz. Ancak, birden çok değeri dizi veya nesne olarak paketleyerek bu sınırlamayı aşabilirsiniz. Bundan sonra, diziyi veya nesneyi işlevden döndürmeniz ve ardından değerlere daha sonra erişmeniz yeterlidir.