Sobes.tech
Junior — Middle

Ποια είναι η διαφορά μεταξύ αποστολής δεδομένων μέσω συνδέσμου και μέσω τιμής, και πώς επηρεάζει αυτό την αλλαγή των δεδομένων μέσα στο πρόγραμμα;

sobes.tech AI

Απάντηση από AI

Η αποστολή δεδομένων με τιμή σημαίνει ότι, κατά τη μεταβίβαση μιας μεταβλητής σε μια συνάρτηση, δημιουργείται ένα αντίγραφο αυτής. Οι αλλαγές μέσα στη συνάρτηση δεν επηρεάζουν το αρχικό. Στο PHP, αυτό είναι χαρακτηριστικό για τους scalar τύπους (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

Έτσι, η αποστολή μέσω αναφοράς επιτρέπει στη συνάρτηση να αλλάξει τα δεδομένα που της δίνονται, ενώ η αποστολή με τιμή όχι.