Πώς να επιστρέψετε πολλές τιμές από μια συνάρτηση PHP


nc
Δημοσίευση: • Share Article:

@Χρησιμοποιούμε κυρίως παραμέτρους σε μία συνάρτηση για τη λήψη δεδομένων και περαιτέρω επεξεργασία. Ομοίως, επιστρέφουμε τιμές από μια συνάρτηση PHP για να αποκτήσουμε πρόσβαση σε επεξεργασμένα δεδομένα εκτός της συνάρτησης. Μπορείτε να ορίσετε συναρτήσεις στην PHP με ή χωρίς επιστρεφόμενη τιμή.
Ενώ μια συνάρτηση στην PHP μπορεί να έχει πολλές παραμέτρους, δεν είναι δυνατό να έχει πολλαπλές δηλώσεις επιστροφής. Σε αυτό το σεμινάριο, θα δούμε πώς μπορούμε να επιστρέψουμε πολλές τιμές από μια συνάρτηση στην PHP.
Οι συναρτήσεις στην PHP μπορούν να έχουν μια προαιρετική δήλωση return. Όταν καλείται από το εσωτερικό μιας συνάρτησης, μια δήλωση επιστροφής σταματά αμέσως την εκτέλεση οποιουδήποτε περαιτέρω κώδικα. Εδώ είναι ένα παράδειγμα:

 
function multiple_returns($a, $b) {
    $x = 2*$a;
    $y = 3*$b;
 
    return $x;
 
    if($y%3 == 0) {
        echo "Y is: ".$y;
    }
 
    return $y;
}
 
$m = 0;
$n = 0;
 
$m = multiple_returns(5, 18);
 
// list($m, $n) = multiple_returns(5, 18);
 
// Outputs: Values are: 10 and 0
echo "Values are: ".$m." and ".$n;
 
?>
Σημειώστε ότι η εκτέλεση του παραπάνω κώδικα δεν επαναλαμβάνει τη δήλωση σχετικά με την τιμή του $y. Αυτό συμβαίνει επειδή η συνάρτηση σταματά την εκτέλεση μετά την πρώτη δήλωση επιστροφής. Εάν καταργήσετε το σχολιασμό της γραμμής όπου χρησιμοποιούμε list()για την εκχώρηση τιμών μεταβλητών, και το $m και το $n θα είναι NULL επειδή η list() λειτουργεί μόνο με πίνακες και η συνάρτηση επιστρέφει μόνο έναν αριθμό.
Χρήση πίνακα για επιστροφή πολλαπλών τιμών
Γνωρίζουμε ότι μια δήλωση επιστροφής μπορεί να επιστρέψει οποιονδήποτε τύπο τιμής. Επομένως, μπορούμε επίσης να τη χρησιμοποιήσουμε για να επιστρέψουμε έναν πίνακα που θα περιέχει όλες τις τιμές που πραγματικά θέλουμε να επιστρέψουμε. Μπορούμε να ξαναγράψουμε το παραπάνω παράδειγμα ως εξής για να επιστρέψουμε πολλαπλές τιμές:

 
function multiple_returns($a, $b) {
    $x = 2*$a;
    $y = 3*$b;
 
    return [$x, $y];
}
 
list($m, $n) = multiple_returns(5, 18);
 
// Outputs: Values are: 10 and 54
echo "Values are: ".$m." and ".$n;
 
?>
Από την άποψη της PHP, εξακολουθείτε να επιστρέφετε μια μεμονωμένη τιμή, αλλά αυτή η μοναδική τιμή είναι ένας πίνακας που μπορεί να περιέχει πολλές άλλες τιμές. Αυτός είναι ένας από τους ευκολότερους τρόπους στην PHP για την προσομοίωση της επιστροφής πολλαπλών τιμών από μια συνάρτηση. Επιστρέφουμε μόνο δύο τιμές στο παραπάνω παράδειγμα. Ωστόσο, τα πράγματα μπορεί να γίνουν λίγο δύσκολα όταν εμπλέκονται περισσότερες τιμές, επειδή πρέπει να έχετε κατά νου τη σωστή σειρά των τιμών που επιστρέφονται.
Ξεκινώντας από την PHP 7.1, μπορείτε να το χρησιμοποιήσετε τη συνάρτηση list() με συσχετιστικούς πίνακες. Αυτό σημαίνει ότι η σειρά με την οποία επιστρέφετε τα στοιχεία δεν θα επηρεάσει τις εκχωρημένες τιμές. Εδώ είναι ένα παράδειγμα:

 
function multiple_returns($a, $b) {
    $x = 2*$a;
    $y = 3*$b;
 
    return ['m' => $x, 'n' => $y];
}
 
list('m' => $m, 'n' => $n) = multiple_returns(5, 18);
 
// Values are: 10 and 54
echo "Values are: ".$m." and ".$n;
 
list('n' => $n, 'm' => $m) = multiple_returns(5, 18);
 
// Values are: 10 and 54
echo "Values are: ".$m." and ".$n;
 
?>
Μπορείτε να δείτε ότι οι μεταβλητές $m, $n παίρνουν τις ίδιες τιμές και στις δύο περιπτώσεις, επειδή οι τιμές εκχωρούνται πλέον με βάση κλειδιά αντί για τους αριθμητικούς δείκτες.
Δεν χρειάζεται καν να χρησιμοποιήσετε τη συνάρτηση list() από την PHP 7.1 και μετά, επειδή η PHP υποστηρίζει πλέον τη σύνταξη αποδομής. Θα μπορούσαμε να ξαναγράψουμε το προηγούμενο παράδειγμα ως εξής:

 
function multiple_returns($a, $b) {
    $x = 2*$a;
    $y = 3*$b;
 
    return ['m' => $x, 'n' => $y];
}
 
['m' => $m, 'n' => $n] = multiple_returns(5, 18);
 
// Values are: 10 and 54
echo "Values are: ".$m." and ".$n;
 
['n' => $n, 'm' => $m] = multiple_returns(5, 18);
 
// Values are: 10 and 54
echo "Values are: ".$m." and ".$n;
 
?>
 

Foreach programming

Εγγραφείτε για να βλέπετε τα εξειδικευμένα άρθρα.