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.
Görev
KolayupdateInventory 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;
?>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
1İleri Seviye Fonksiyonlar
Anonim FonksiyonlarClosure'lar ve 'use'Ok Fonksiyonları (Arrow Functions)Geri Çağırma (Callback) Fonksiyonları'call_user_func' KullanımıDeğişken FonksiyonlarReferans ile Değer AktarımıÖz Yinelemeli (Recursive) FonksiyonlarÖzet: Fonksiyon Karması4Çok Boyutlu Diziler
2 Boyutlu Dizi Oluşturma2 Boyutlu Dizi Elemanlarına Erişme2 Boyutlu Dizi Elemanlarını Değiştirmeİç İçe Döngülerle Yineleme2 Boyutlu İlişkisel DizilerÖzet: Basit Izgara Egzersizi2İleri Düzey Dizi İşlemleri
'array_push' ile Ekleme'array_pop' ile Silme'array_unshift' ile Ekleme'array_shift' ile Silmeİndisli Dizileri Birleştirmeİlişkisel Dizileri Birleştirme'array_slice' ile Kesit Alma'in_array' ile Değer Kontrolü'array_search' ile Anahtar AramaÖzet: Çalma Listesi Alıştırması3Dizileri Sıralama
İndisli Dizileri Artan Sırada Sıralamaİndisli Dizileri Azalan Sırada Sıralamaİlişkisel Dizileri Değere Göre Sıralamaİlişkisel Dizileri Anahtara Göre SıralamaDoğal Sıralama (Natural Order)'usort' ile Özel SıralamaÖzet: Liderlik Tablosu SıralamaKendi başına pratik yap: Online PHP derleyicisi