Sobes.tech
Intern

როგორ გადაეცემა ცვლადები PHP-ში?

sobes.tech AI

პასუხი AI-სგან

PHP-ში ცვლადები გადაეცემა მნიშვნელობით by default. ეს ნიშნავს, რომ როდესაც ერთ ცვლადს მიენიჭება სხვა ცვლადის მნიშვნელობა ან გადაეცემა ფუნქციას, იქმნება მნიშვნელობის ასლი. ამ ასლში განხორციელებული ცვლილებები არ ახდენს გავლენას ორიგინალ ცვლადზე.

თუმცა, ცვლადები შეიძლება გადაეცეს ასევე რბოლით. ამ შემთხვევაში, მნიშვნელობის ასლის ნაცვლად, გადაეცემა იგივე მეხსიერების უბნის მაჩვენებელი, რაც ორიგინალ ცვლადს. რბოლით განხორციელებული ცვლილებები პირდაპირ გავლენას ახდენს ორიგინალ ცვლადზე.

რბოლით გადაცემა გამოიყენება:

  • რბოლით მინიჭება: ოპერატორი =& გამოყენებით:

    // რბოლით მინიჭება
    $a = 10;
    $b =& $a;
    $b = 20; // ცვლილება $b-ში ასევე იცვლის $a-ს
    // ახლა $a თანაბარია 20
    
  • ფუნქციას რბოლით გადაცემა: ფუნქციის განსაზღვრებაში პარამეტრის სახელის წინ დამატება &:

    <?php
    // ფუნქცია, რომელიც იღებს არგუმენტს რბოლით
    function modifyValue(&$value) {
        $value *= 2;
    }
    
    $number = 5;
    modifyValue($number);
    // ახლა $number თანაბარია 10
    ?>
    
  • მნიშვნელობის დაბრუნება რბოლით ფუნქციიდან: ფუნქციის განსაზღვრებაში სახელის წინ გამოყენება &:

    <?php
    // ფუნქცია, რომელიც აბრუნებს მნიშვნელობას რბოლით
    function &getReference() {
        static $value = 0;
        $value++;
        return $value;
    }
    
    $a = &getReference();
    $a = 100; // ცვლილება გავლენას ახდენს ფუნქციის სტატიკურ ცვლილებაზე
    
    $b = &getReference(); // $b ახლა იგივე სტატიკურ ცვლილებაზე მიუთითებს (მნიშვნელობა 101)
    ?>
    

მნიშვნელოვანია აღინიშნოს, რომ ზოგიერთი მონაცემთა ტიპი, როგორიცაა ობიექტები, ყოველთვის გადაეცემა რბოლით (ან უფრო სწორად, რბოლით გადაეცემა ობიექტის რბოლა). როდესაც ერთი ობიექტი გადაეცემა მეორე ობიექტს, ორივე ცვლადი მიუთითებს ერთსა და იმავე ობიექტის მაგალითზე:

გადაცემის მეთოდი როგორ მუშაობს გამოყენება
მნიშვნელობით წარმოიქმნება მნიშვნელობის ასლი უსაფრთხო თავდაპირველი ცვლადისთვის
რბოლით გადაეცემა მეხსიერების მაჩვენებელი ცვლილებები პირდაპირ გავლენას ახდენს თავდაპირველ ცვლადზე