Sobes.tech
Intern

Ինչպես փոխանցել փոփոխականները PHP-ում?

sobes.tech AI

Պատասխան AI-ից

PHP-յում փոփոխականները ըստ նախնական արժեքի փոխանցվում են: Սա նշանակում է, որ երբ մի փոփոխականի արժեքը նշանակվում է մյուսին կամ փոխանցվում է ֆունկցիային, ստեղծվում է արժեքի պատճեն: Այս պատճենում կատարված փոփոխությունները չեն ազդում սկզբնական փոփոխականի վրա:

Այնուամենայնիվ, փոփոխականները կարող են փոխանցվել նաև հղումով: Այս դեպքում, փոխարեն արժեքի պատճենի, փոխանցվում է նույն հիշողության տարածքի ցուցիչը, ինչ սկզբնական փոփոխականը: Հղումով կատարված փոփոխությունները ուղղակիորեն ազդում են սկզբնական փոփոխականի վրա:

Հղումով փոխանցումը օգտագործվում է՝

  • Հղումով նշանակում: Օպերատոր =&-ով:

    // Հղումով նշանակում
    $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)
    ?>
    

Կարևոր է նշել, որ որոշ տվյալների տեսակներ, ինչպես օրինակ, օբյեկտները, միշտ փոխանցվում են հղումով (կամ ավելի ճիշտ՝ հղում է փոխանցվում օբյեկտին): Երբ մի օբյեկտը փոխանցվում է մյուսին, երկու փոփոխականներն էլ հղում են անում նույն օբյեկտի օրինակին:

Փոխանցման մեթոդ Ինչպես է աշխատում Օգտագործում
Մասին արժեք Ստեղծվում է արժեքի պատճեն Դեպի սկզբնական փոփոխականի անվտանգ, որպես կանխարգելում
Հղումով Փոխանցվում է հիշողության ցուցիչը Փոփոխությունները անմիջապես ազդում են սկզբնական փոփոխականի վրա