Sobes.tech
Junior — Middle

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

sobes.tech AI

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

მონაცემების გადაცემა მნიშვნელობით ნიშნავს, რომ როდესაც ვცვლით ცვლადს ფუნქციაში, მისი ასლი იქმნება. ფუნქციის შიგნით ცვლილებები არ ახდენს გავლენას ორიგინალზე. PHP-ში ეს ტიპიურია სკალარული ტიპებისთვის (int, string, bool) და მასივებისთვის (PHP 7-მდე, დაწერის დროს ასლს ქმნის).

გადაცემა რუკით ნიშნავს, რომ ფუნქციას გადაეცემა რეფერენცია ორიგინალურ მონაცემებზე, და ნებისმიერი ცვლილება ფუნქციის შიგნით აისახება ორიგინალურ ცვლადზე. PHP-ში ეს რეალიზებულია პარამეტრის წინამძღვარი სიმბოლოთი (&).

მაგალითი:

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

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

$a = 5;
addOneByValue($a); // $a დარჩება 5
addOneByReference($a); // $a გახდება 6

ამ გზით, რუკით გადაცემა საშუალებას აძლევს ფუნქციას შეცვალოს გადაცემული მონაცემები, ხოლო მნიშვნელობით — არა.