Sobes.tech
Junior — Middle

Kā atšķiras datu pārsūtīšana pa saiti un pa vērtību, un kā tas ietekmē datu izmaiņas programmā?

sobes.tech AI

Atbilde no AI

Datu nodošana pēc vērtības nozīmē, ka, nododot mainīgo funkcijai, tiek izveidota tā kopija. Izmaiņas funkcijas iekšienē neietekmē oriģinālu. PHP tas raksturīgs skalarajiem tipiem (int, string, bool) un masīviem (līdz PHP 7, ar kopēšanu rakstīšanas laikā).

Nododot pa atsauci, funkcijai tiek nodota atsauce uz oriģinālajiem datiem, un jebkādas izmaiņas funkcijas iekšienē atspoguļojas sākotnējā mainīgajā. PHP to realizē ar simbolu ampersand (&) pirms parametra.

Piemērs:

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

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

$a = 5;
addOneByValue($a); // $a paliks 5
addOneByReference($a); // $a kļūs 6

Šādā veidā, nodošana pa atsauci ļauj funkcijai mainīt nodotos datus, bet pa vērtību — ne.