Rumah > Soal Jawab > teks badan
Saya mempunyai tatasusunan di luar:
$myArr = array();
Saya mahu fungsi saya mengakses tatasusunan di luarnya supaya ia boleh menambah nilai padanya
function someFuntion(){ $myVal = //some processing here to determine value of $myVal $myArr[] = $myVal; }
Bagaimana untuk memberi pembolehubah skop yang betul untuk fungsi?
P粉6455691972023-10-17 13:51:02
Anda boleh menggunakan fungsi tanpa nama:
$foo = 42; $bar = function($x = 0) use ($foo) { return $x + $foo; }; var_dump($bar(10)); // int(52)
Atau anda boleh menggunakan fungsi anak panah:
$bar = fn($x = 0) => $x + $foo;
P粉7344867182023-10-17 13:39:45
Secara lalai, apabila anda berada di dalam fungsi, anda tidak mempunyai akses kepada pembolehubah luaran.
Jika anda mahu sesuatu fungsi boleh mengakses pembolehubah luaran, anda mesti mengisytiharkannya sebagai pembolehubah global di dalam fungsi:
function someFuntion(){ global $myArr; $myVal = //some processing here to determine value of $myVal $myArr[] = $myVal; }
Untuk maklumat lanjut, lihat Skop boleh ubah .
Tetapi sila ambil perhatian bahawa menggunakan pembolehubah global bukanlah amalan yang baik: dengan cara ini fungsi anda tidak lagi bebas.
Idea yang lebih baik ialah mempunyai fungsi anda kembalikan hasilnya :
function someFuntion(){ $myArr = array(); // At first, you have an empty array $myVal = //some processing here to determine value of $myVal $myArr[] = $myVal; // Put that $myVal into the array return $myArr; }
dan panggil fungsi seperti ini:
$result = someFunction();
Fungsi anda juga boleh menerima hujah dan juga mengendalikan hujah yang diluluskan melalui rujukan :
function someFuntion(array & $myArr){ $myVal = //some processing here to determine value of $myVal $myArr[] = $myVal; // Put that $myVal into the array }
Kemudian, panggil fungsi seperti ini:
$myArr = array( ... ); someFunction($myArr); // The function will receive $myArr, and modify it
Dengan ini:
Untuk maklumat lanjut, anda harus membaca bahagian functions< PHP 手册的 /a>, terutamanya subseksyen berikut: