Forum und email

Πέρασμα με αναφορά

Μπορείτε να περάσετε μεταβλητές σε συναρτήσεις με αναφορά, έτσι ώστε η συνάρτηση να μπορεί να τροποποιήσει τα ορίσματα της. Η σύνταξη έχει ως ακολούθως:

<?php
function foo (&$var)
{
    
$var++;
}

$a=5;
foo ($a);
// $a is 6 here
?>
Σημειώστε ότι δεν υπάρχει κάποιο σημάδι αναφοράς στην κλήση της συνάρτησης - μόνο στον ορισμό της συνάρτησης. Ο ορισμός της συνάρτησης από μόνος του είναι αρκετός για να περάσει σωστά τα ορίσματα με αναφορά.

Τα ακόλουθα μπορούν να περαστούν με αναφορά:

  • Η μεταβλητή, π.χ. foo($a)
  • Μια νέα δήλωση, π.χ. foo(new foobar())
  • Αναφορά, που επιστρέφεται από μια συνάρτηση, π.χ.:

    <?php
    function &bar()
    {
        
    $a 5;
        return 
    $a;
    }
    foo(bar());
    ?>
    Δείτε επίσης εξηγήσεις σχετικά με επιστροφή με αναφορά (returning by reference).

Οποιαδήποτε άλλη έκφραση δεν θα πρέπει να χρησιμοποιείται στο πέρασμα με αναφορά, αφού το αποτέλεσμα που θα προκύπτει να είναι απροσδιόριστο. Για παράδειγμα, τα ακόλουθα παραδείγματα περάσματος με αναφορά δεν είναι έγκυρα:

<?php
function bar() // Note the missing &
{
    
$a 5;
    return 
$a;
}
foo(bar());

foo($a 5// Expression, not variable
foo(5// Constant, not variable
?>
Αυτές οι απαιτήσεις ισχύουν για την PHP 4.0.4 και μετά.