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
ამ გზით, რუკით გადაცემა საშუალებას აძლევს ფუნქციას შეცვალოს გადაცემული მონაცემები, ხოლო მნიშვნელობით — არა.