Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk mengembalikan berbilang nilai daripada satu fungsi PHP

Bagaimana untuk mengembalikan berbilang nilai daripada satu fungsi PHP

PHPz
PHPzasal
2023-08-27 14:05:111864semak imbas

Bagaimana untuk mengembalikan berbilang nilai daripada satu fungsi PHP

Kami terutamanya menggunakan parameter fungsi untuk mendapatkan data luaran di dalam fungsi untuk pemprosesan selanjutnya. Begitu juga, kami mengembalikan nilai daripada fungsi PHP untuk mengakses data yang diproses di luar fungsi. Anda boleh menentukan fungsi dalam PHP dengan atau tanpa nilai pulangan.

Walaupun fungsi dalam PHP boleh mempunyai berbilang parameter, adalah mustahil untuk mempunyai berbilang penyataan pulangan. Dalam tutorial ini, saya akan menunjukkan kepada anda bagaimana untuk mengembalikan berbilang nilai daripada fungsi dalam PHP.

  • Kembalikan penyata dalam PHP
  • Gunakan tatasusunan untuk mengembalikan berbilang nilai
  • Gunakan objek untuk mengembalikan berbilang nilai

Kembalikan penyata dalam PHP

Fungsi dalam PHP boleh mempunyai pernyataan return pilihan. Apabila dipanggil dari dalam fungsi, pernyataan pemulangan serta-merta menghentikan pelaksanaan sebarang kod selanjutnya. Ini juga termasuk penyata pulangan lain. Berikut adalah contoh: return 语句。当从函数内部调用时,返回语句会立即停止任何进一步代码的执行。这还包括其他返回语句。这是一个例子:

<?php

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 值的语句。这是因为函数在第一个 return 语句后停止执行。如果取消注释我们使用 list() 分配变量值的行,则 $m$n 都将是 NULL 因为 list() 仅适用于数组,并且该函数仅返回一个数字。

使用数组返回多个值

我们知道 return 语句可以返回任何类型的值。因此,我们还可以使用它返回一个数组,其中包含我们实际想要返回的所有值。我们可以将上面的示例重写如下以返回多个值:

<?php

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() 与关联数组一起使用。这意味着返回元素的顺序不会影响分配的值。这是一个例子:

<?php

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 在两种情况下都获得相同的值,因为现在是根据键而不是数字索引来分配值。

从 PHP 7.1 开始,您甚至不需要使用 list()

<?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;

?>

Sila ambil perhatian bahawa menjalankan kod di atas tidak akan menggemakan pernyataan tentang nilai $y. Ini kerana fungsi berhenti melaksanakan selepas penyataan pulangan pertama. Jika anda menyahtanda baris yang kami gunakan list() untuk menetapkan nilai pembolehubah, kedua-dua $m dan $n akan menjadi NULL code> Kerana list() hanya berfungsi dengan tatasusunan dan fungsi hanya mengembalikan nombor.

Kembalikan berbilang nilai menggunakan tatasusunan

Kami tahu bahawa penyata pulangan boleh mengembalikan sebarang jenis nilai. Jadi kita juga boleh menggunakan ini untuk mengembalikan tatasusunan yang mengandungi semua nilai yang sebenarnya kita mahu pulangkan. Kita boleh menulis semula contoh di atas seperti berikut untuk mengembalikan berbilang nilai:

<?php

class ValueStore {
    public $m;
    public $n;
}

function multiple_returns_class($a, $b) {

    $my_values = new ValueStore();
    $my_values->m = 2*$a;
    $my_values->n = 3*$b;

    return $my_values;
}

$values = multiple_returns_class(5, 18);

// Values are: 10 and 54
echo "Values are: ".$values->m." and ".$values->n;

?>

Dari perspektif PHP, anda masih mengembalikan satu nilai, tetapi nilai tunggal itu ialah tatasusunan yang boleh mengandungi berbilang nilai lain. Ini adalah salah satu cara paling mudah untuk mensimulasikan fungsi yang mengembalikan berbilang nilai dalam PHP.

Dalam contoh di atas, kami hanya mengembalikan dua nilai. Walau bagaimanapun, apabila lebih banyak nilai terlibat, keadaan boleh menjadi lebih rumit kerana anda perlu mengingati susunan nilai pulangan yang betul.

Bermula dalam PHP 7.1, anda boleh menggunakan list() dengan tatasusunan bersekutu. Ini bermakna bahawa susunan elemen dikembalikan tidak menjejaskan nilai yang diberikan. Berikut adalah contoh: 🎜 rrreee 🎜Anda dapat melihat bahawa pembolehubah $m dan $n mendapat nilai yang sama dalam kedua-dua kes kerana kini nilai ditetapkan berdasarkan kunci dan bukannya indeks berangka. 🎜 🎜Bermula dengan PHP 7.1, anda tidak perlu menggunakan list() kerana PHP kini menyokong sintaks pemusnahan. Kita boleh menulis semula contoh sebelumnya sebagai: 🎜 rrreee 🎜 Kembalikan berbilang nilai menggunakan objek🎜 🎜Cara lain untuk mengembalikan berbilang nilai daripada fungsi PHP adalah dengan mengembalikan objek. Kita boleh menentukan kelas dengan sifat yang berbeza menggunakan pembolehubah ahli awam. Satu kelemahan teknik ini ialah anda perlu menulis lebih banyak kod, jadi ia akan menggunakan lebih banyak memori untuk menyimpan berbilang contoh kelas. Kelebihannya ialah anda boleh menggunakan set pembolehubah yang sama di beberapa tempat. 🎜 rrreee 🎜Seperti yang anda lihat, kita boleh berjaya mendapatkan berbilang nilai daripada fungsi hanya dengan mencipta objek dan memberikan nilai kepada pelbagai sifatnya. 🎜 🎜 Fikiran akhir 🎜 🎜Dalam tutorial ini, anda mengetahui bahawa PHP tidak membenarkan anda mengembalikan berbilang nilai secara terus daripada fungsi. Walau bagaimanapun, anda boleh mengatasi had ini dengan membungkus berbilang nilai ke dalam tatasusunan atau objek. Selepas itu anda hanya mengembalikan tatasusunan atau objek daripada fungsi dan mengakses nilai. 🎜

Atas ialah kandungan terperinci Bagaimana untuk mengembalikan berbilang nilai daripada satu fungsi PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn