Menu
Coddy logo textTech

Referans ile Değer Aktarımı

Coddy'nin PHP Journey'sinin Mantık ve Akış bölümünün bir parçası. Ders 7 / 68.

Varsayılan olarak, PHP'de bir variable'ı bir function'a aktardığınızda, function bu variable'ın değerinin bir kopyasını alır. Bu, function içinde yapılan değişikliklerin function dışındaki orijinal variable'ı etkilemediği anlamına gelir.

Ancak bazen bir işlevin özgün değişkeni doğrudan değiştirmesini istersiniz. Referansla geçirme bu noktada devreye girer. İşlev tanımınızda parametre adının önüne bir ve işareti (&) ekleyerek PHP'ye bir kopya yerine gerçek değişkeni geçmesini söylersiniz:

<?php
function doubleValue(&$number) {
    $number = $number * 2;
}

$value = 10;
doubleValue($value);
echo $value;  // Çıktı: 20
?>

$value değerinin, fonksiyondan hiçbir şey döndürmemiş olmamıza rağmen 10'dan 20'ye nasıl değiştiğine dikkat edin. &$number parametresi, özgün $value değişkenine doğrudan bir bağlantı oluşturur ve fonksiyonun onu doğrudan değiştirmesine olanak tanır.

Bu teknik, özellikle bir function birden çok değişkeni değiştirmeniz gerektiğinde veya kopyalamanın verimsiz olacağı büyük veri yapılarıyla çalışırken oldukça kullanışlıdır.

challenge icon

Görev

Kolay

updateInventory adlı, üç parametre alan bir fonksiyon oluşturun: bir miktar değişkenine başvuru, eklenecek miktar ve çıkarılacak miktar. Fonksiyon, ilk miktarı ekleyip ikinci miktarı çıkararak özgün miktarı değiştirmelidir.

Üç girdi alacaksınız: başlangıç miktarı, eklenecek miktar ve çıkarılacak miktar. Üç girdinin tamamını okuyun, başlangıç miktarıyla bir değişken oluşturun, miktarı başvuru yoluyla ekleme ve çıkarma miktarlarıyla birlikte updateInventory fonksiyonuna göndererek çağırın ve güncellenen miktarı yazdırın.

Girdi biçimi: Üç satır - ilk satır başlangıç miktarını (bir sayı), ikinci satır eklenecek miktarı (bir sayı), üçüncü satır çıkarılacak miktarı (bir sayı) içerir

Beklenen çıktı: Ekleme ve çıkarma işlemlerinden sonraki güncellenmiş miktar

Kendin dene

<?php
// Girdileri oku
$initialQuantity = intval(fgets(STDIN));
$amountToAdd = intval(fgets(STDIN));
$amountToRemove = intval(fgets(STDIN));

// quantity değişkenini oluştur
$quantity = $initialQuantity;

// TODO: Burada referans parametresi alan updateInventory fonksiyonunu oluştur

// TODO: updateInventory fonksiyonunu quantity ile referans olarak çağır

// Güncellenmiş quantity'yi yazdır
echo $quantity;
?>
quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Mantık ve Akış bölümündeki tüm dersler

Kendi başına pratik yap: Online PHP derleyicisi