Sobes.tech
Junior — Middle

Ինչպես են տարբերվում տվյալների փոխանցումը հղումով և արժեքով, և դա ինչպես է ազդում ծրագրի ներսում տվյալների փոփոխության վրա?

sobes.tech AI

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

Տվյալների փոխանցումը արժեքով նշանակում է, որ երբ փոխանցում եք փոփոխականը ֆունկցիային, այն ստեղծում է դրա պատճենը: Ֆունկցիայի ներսում փոփոխությունները չեն ազդում սկզբնաղբյուրի վրա: PHP-ում դա բնորոշ է սքալարային տիպերի (int, string, bool) և զանգվածների համար (PHP 7-ով մինչև՝ պատճենում գրելու ժամանակ):

Հղման միջոցով փոխանցումը նշանակում է, որ ֆունկցիային փոխանցվում է տվյալների հղում, և ցանկացած փոփոխություն ֆունկցիայի ներսում արտացոլվում է սկզբնաղբյուր փոփոխականում: PHP-ում դա իրականացնում է սիմվոլի առաջ ampersand (&) օգտագործելով։

Օրինակ՝

function addOneByValue($num) {
    $num += 1;
}

function addOneByReference(&$num) {
    $num += 1;
}

$a = 5;
addOneByValue($a); // $a կմնա 5
addOneByReference($a); // $a կդառնա 6

Այսպիսով, հղման միջոցով փոխանցումը թույլ է տալիս ֆունկցիային փոփոխել փոխանցված տվյալները, իսկ արժեքով — ոչ։