Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Menyahmistifikasi nilai lulus dan rujukan lulus dalam panggilan fungsi PHP

Menyahmistifikasi nilai lulus dan rujukan lulus dalam panggilan fungsi PHP

WBOY
WBOYasal
2024-04-16 14:39:011048semak imbas

Panggilan fungsi dalam PHP boleh dihantar mengikut nilai atau rujukan. Lalai adalah untuk lulus mengikut nilai, fungsi menerima salinan parameter, dan pengubahsuaian padanya tidak menjejaskan nilai asal. Lulus melalui rujukan diisytiharkan dengan menambahkan simbol & sebelum parameter, dan fungsi itu secara langsung mengubah suai pembolehubah yang diluluskan. Melewati rujukan berguna apabila anda memerlukan fungsi untuk mengubah suai pembolehubah luaran, seperti elemen tatasusunan. . Ini bermakna apabila nilai dihantar ke fungsi sebagai hujah, fungsi akan mendapat salinan nilai. Sebarang perubahan yang dibuat pada salinan ini tidak akan menjejaskan nilai asal.

function addValue($number) {
  $number += 10;
}

$value = 10;
addValue($value);
echo $value; // 输出:10

Seperti yang ditunjukkan dalam contoh di atas, apabila $value dihantar ke fungsi addValue, fungsi tersebut mendapat salinan pembolehubah. Pengubahsuaian dalam fungsi hanya mempengaruhi salinan, bukan pembolehubah asal. 揭秘 PHP 函数调用中的值传递和引用传递

Lulus dengan rujukan

Kadangkala, kita memerlukan fungsi untuk mengubah suai terus pembolehubah asal. Dalam kes ini, rujukan lulus boleh digunakan. Untuk mengisytiharkan rujukan, tambah simbol & sebelum pengisytiharan jenis parameter.

function addReference(&$number) {
  $number += 10;
}

$value = 10;
addReference($value);
echo $value; // 输出:20

Seperti yang ditunjukkan dalam contoh di atas, parameter $number bagi fungsi addReference diisytiharkan sebagai rujukan. Ini bermakna fungsi tersebut akan mengubah suai terus pembolehubah yang diluluskan.

Contoh Praktikal

$value 传递给 addValue 函数时,函数获取该变量的副本。函数内的修改只影响该副本,不会影响原始变量。

引用传递

有时,我们需要函数直接修改原始变量。这时,可以使用引用传递。要声明引用,请在参数类型声明前添加一个 & 符号。

$users = [
  [
    'id' => 1,
    'name' => 'John Doe',
  ],
];

function changeName(&$user, $newName) {
  $user['name'] = $newName;
}

changeName($users[0], 'Jane Doe');
echo $users[0]['name']; // 输出:Jane Doe

如上例所示,addReference 函数的 $number 参数声明为引用。这意味着函数将直接修改传递的变量。

实战案例

使用引用传递可以简化某些任务。例如,我们有一个包含用户数据的数组,并且需要在函数中对其进行修改。

rrreee

通过将 $user 参数声明为引用,changeNameMenggunakan rujukan lulus boleh memudahkan tugas tertentu. Sebagai contoh, kami mempunyai tatasusunan yang mengandungi data pengguna dan perlu mengubah suainya dalam fungsi.

rrreee

Dengan mengisytiharkan parameter $user sebagai rujukan, fungsi changeName boleh mengubah suai terus elemen asal dalam tatasusunan.

Kesimpulan

🎜Memahami nilai lulus dan rujukan lulus dalam PHP adalah penting untuk menulis kod yang cekap dan boleh diselenggara. Dengan menggunakan rujukan lulus, kita boleh mengelakkan penyalinan pembolehubah yang tidak perlu dan mengubah suai terus pembolehubah di luar fungsi. 🎜

Atas ialah kandungan terperinci Menyahmistifikasi nilai lulus dan rujukan lulus dalam panggilan 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