PHP: Parameter Fungsi dan Argumen. Argumen Fungsi Senarai argumen panjang berubah-ubah

Dalam amalan pembangunan web saya, saya sering menemui situasi di mana pelanggan menetapkan matlamat tertentu, iaitu, pengasingan bahagian panel pentadbir berkenaan kebolehaksesan kepada pengguna tertentu. Pada masa yang sama, pembangunan modul ini dijalankan dalam konteks sistem yang boleh dikembangkan, iaitu, dengan bilangan modul tidak tetap yang aksesnya diatur, dan, dengan itu, bilangan pengguna sistem yang tidak terhad.

Nah, dengan sendirinya, topik ini agak berat, dan memerlukan sedikit masa untuk menganalisis dan menetapkan tugas.

Dalam konteks artikel ini, kami akan membangunkan dalam konteks beberapa sistem maklumat abstrak, dengan infrastruktur dan seni binanya sendiri, manakala sistem ini memberi pengguna peluang untuk mengembangkan fungsi, iaitu, memasang modul baharu, dan ditetapkan dengan sewajarnya. hak akses kepada mereka untuk pengguna tertentu yang didaftarkan sebagai pentadbir sistem.

Mari kita bincangkan dahulu seni bina sistem modular pada sistem pseudo pilihan kita.

Semua modul dibentangkan sebagai sisipan yang disambungkan ke dokumen utama (fail indeks). Permintaan modul datang daripada rentetan pertanyaan QUERY_STRING dan nama pemalam dihantar sebagai hujah tindakan. Pada satu ketika dalam indeks fail, parameter ini diambil dan diproses. Selepas itu, jika pengguna mempunyai hak yang mencukupi untuk mengakses modul dalam konteks bacaan, kewujudan modul yang dinyatakan dalam rentetan pertanyaan diperiksa, dan jika wujud, maka ia disambungkan ke fail indeks.

Saya tidak hanya menyebut "konteks membaca", kerana sistem kami menganggap kewujudan dua konteks untuk bekerja dengan sistem, iaitu membaca dan menulis. Pada masa yang sama, membaca membayangkan akses terus kepada modul dan bahagian-bahagiannya yang tidak memerlukan perubahan pada struktur data dalam pangkalan data. Di bawah rekod, ia sepatutnya membuat perubahan terus kepada maklumat yang disimpan dalam pangkalan data.

Untuk melaksanakan mekanisme ini, kami akan menyemak nilai pembolehubah rentetan pertanyaan `do`, yang diproses dalam modul itu sendiri dan membawa maklumat tentang bahagian modul yang anda perlukan untuk memberikan akses kepada pengguna.

Nilai do akan ditetapkan, pembolehubah ini akan mengambil nilai berikut:

  • utama - bahagian utama modul (tersedia dalam konteks bacaan)
  • config - bahagian konfigurasi modul (tersedia dalam konteks entri)
  • cipta - lakukan beberapa tindakan untuk menambah maklumat pada pangkalan data (tersedia dalam konteks rekod)
  • padam - akses kepada bahagian yang menyediakan keupayaan untuk memadam beberapa maklumat, dalam konteks modul ini (tersedia dalam konteks rekod)
  • edit - akses kepada maklumat penyuntingan dalam konteks modul (tersedia dalam konteks rekod)

Secara umum, senarai ini boleh ditingkatkan, sementara semuanya bergantung hanya pada skala projek dan keperluannya untuk fungsi.

Sekarang secara langsung mengenai modul. Sebagai tambahan kepada kewujudan fizikal modul tertentu dalam konteks sistem fail projek, modul juga mesti ditambah pada jadual pangkalan data khas yang akan mengandungi maklumat tentang semua modul sedia ada dalam sistem. Menambah dan menukar data jadual ini biasanya dilakukan secara langsung dalam konteks modul, iaitu semasa pemasangannya dalam sistem. Walau bagaimanapun, ini sudah pun mendalami prinsip melihat sistem yang boleh diperluaskan, yang akan kami bincangkan pada masa lain, dan oleh itu, kami akan mengehadkan diri kami untuk mengemas kini dan menambah data tentang modul secara manual.

Oleh itu, rekod tentang modul sistem akan mengandungi maklumat berikut: pengecam bahasa Inggeris bagi nama modul, yang akan sama dengan nilai pembolehubah persekitaran GET - bertindak (modul akan diminta secara langsung terhadapnya), modul Rusia pengecam, yang akan digunakan dalam senarai modul.

Sebagai tambahan kepada modul, kami akan mempunyai dua lagi jadual, iaitu jadual yang akan menyimpan data mengenai profil hak akses dan jadual dengan maklumat tentang pengguna secara langsung.

Jadual profil keselamatan hanya akan terdiri daripada tiga medan - pengecam profil (nilai berangka pengecam rekod), pengecam teks modul (ditujukan untuk pengguna) dan label teks yang dibentuk khas yang mengandungi maklumat tentang hak pengguna dalam konteks setiap modul.

Baiklah, mari kita lihat struktur khas ini. Ia akan menjadi: [ module_indefier: + \: + \;] *

Iaitu, terdapat senarai pasangan: nama modul ":" baca kebenaran "," tulis kebenaran ";". Dalam kes ini, label ini dikemas kini pada masa perubahan dalam hak akses pengguna kepada sistem. Jika maklumat muncul dalam sistem tentang modul yang tidak disertakan dalam label ini, maka anda hanya perlu melakukan prosedur pengeditan dan data akan disimpan secara automatik.

Kini tinggal bagi kita untuk mempertimbangkan struktur hanya satu jadual pangkalan data, dan kita boleh mula melaksanakan bahagian algoritma, iaitu jadual dengan maklumat tentang pengguna sistem, kerana memberikan hak akses kepada mereka adalah tugas utama kami.

Saya tidak akan menambah apa-apa tambahan kepadanya, tetapi hanya apa yang akan digunakan dalam konteks topik artikel ini. Jadual pengguna akan mengandungi medan berikut: ID pengguna (kaunter angka), log masuk, kata laluan (cincang kata laluan asal), profil keselamatan pengguna (ID kumpulan pengguna, relatif kepada hak dalam sistem), dan itu sahaja. Nampaknya pada saya maklumat ini cukup untuk kami melaksanakan tugas itu, dan saya sudah menyediakan peluang untuk melakukan semua alat tambah lain sendiri.

Jadi, kami membincangkan struktur, dan, saya harap, semua orang sudah mempunyai idea tentang bagaimana kami akan melaksanakan tugas yang ditetapkan dalam topik artikel. Sekarang saya akan memberikan kod SQL tambahan bagi jadual yang diterangkan di atas, selepas itu saya akan segera meneruskan pelaksanaan algoritma untuk menyemak hak akses pengguna, serta mencipta dan menukar profil akses. Selepas setiap modul individu, kami akan membincangkan secara terperinci sebarang soalan pembaca.

jadual `modul`:

CIPTA JADUAL `modules` (`id` bigint(20) NOT NULL auto_increment, `indefier` text collate utf8_unicode_ci NOT NULL, `title` text collate utf8_unicode_ci NOT NULL, PRIMARY KUNCI (`id`)) ENGINE=MyISAM AUTO_DEINCULTUTO1 CHARSET=utf8 COLLATE=utf8_unicode_ci;

Jadual `secure_groups`:

CIPTA JADUAL `secure_groups` (`id` bigint(20) NOT NULL auto_increment, `title` text collate utf8_unicode_ci NOT NULL, `perms` text collate utf8_unicode_ci NOT NULL, PRIMARY KEY (`id`)) ENGINE=MYINCRETUTUTO_1 CHARSET=utf8 COLLATE=utf8_unicode_ci ;

Jadual `pengguna`

CIPTA JADUAL `pengguna` (`id` bigint(20) BUKAN NULL auto_increment, `log masuk` teks susun utf8_unicode_ci BUKAN NULL, `passwd` susun teks utf8_unicode_ci BUKAN NULL, `groupId` int(1) BUKAN NULL lalai "0", UTAMA KEY (`id`)) ENGINE=MyISAM AUTO_INCREMENT=1 CARSET lalai=utf8 COLLATE=utf8_unicode_ci ;

temp=array(); $this->temp["_result"]=0; $this->temp["_uid"]=explode("::",$_COOKIE["site_hash"]); $this->temp["_uid"]=$this->temp["_uid"]; $this->temp["_gid"]=$this->getUserSecurityAccess($this->temp["_uid"]); $this->temp["_conn_id"]=mysql_connect("host","user","passwd"); mysql_select_db("pangkalan data"); $this->temp["_q1"]=mysql_query("SELECT perms" ."FROM `secure_groups`" ."WHERE id=".$this->temp["_gid"]); $this->temp["_access_stamp"]=mysql_fetch_assoc($this->temp["_q1"]); $this->temp["_access_stamp"]=$this->temp["_access_stamp"]["perms"]; $this->temp["_access_stamp"]=explode(";",$this->temp["_access_stamp"]); $this->temp["_access_stamp"]=array_slice($this->temp["_access_stamp"],0,-1); foreach($this->temp["_access_stamp"] sebagai $this->temp["v"])( $this->temp["_mod_access"]=explode(":",$this->temp["v "]); $this->temp["_mod_indefier"]=$this->temp["_mod_access"]; if($this->temp["_mod_indefier"]==$modul)( $this->temp[ "_perms"]=explode(",",$this->temp["_mod_access"]); suis($act)( case "r": $this->temp["_result"]=($this-> temp["_perms"]==1)?1:0; break; case "w": $this->temp["_result"]=($this->temp["_perms"]==1)?1 :0; break; ) break; ) ) mysql_close($conn_id); kembalikan $this->temp["_result"]; ) ) ?>

Kelas ini melaksanakan fungsi yang direka untuk melaksanakan tugas algoritma yang diterangkan di atas. Sekarang kita akan membincangkan setiap fungsi secara berasingan.

fungsi secure::getUserId().

Dengan menggunakan fungsi ini, kami menganggap bahawa semasa kebenaran pengguna dalam sistem, pembolehubah persekitaran $_COOKIE telah ditetapkan kepada pembolehubah `site_hash`, yang terdiri daripada pengecam pengguna dalam sistem dan cincang untuk mengesahkan ketulenannya dalam sistem. Fungsi ini hanya mengalih keluar nilai pengecam, mengembalikan nilainya sebagai output.

function secure::getUserSecurityAccess($id)

Semasa keluar, fungsi ini mengembalikan ID profil keselamatan pengguna semasa pada sistem.

fungsi secure::checkUserPermission($module,$act)).

Pertanyaan dibuat kepada pangkalan data mengenai hak pengguna untuk melakukan tindakan baca / tulis dalam konteks modul yang diluluskan sebagai parameter.

Ia kekal hanya untuk menerangkan prosedur untuk mencipta pembolehubah dalam persekitaran $_COOKIE, dan topik artikel boleh dianggap diselesaikan.

Prosedur kebenaran akan kelihatan seperti memasukkan data peribadi pengguna (log masuk dan kata laluan) ke dalam borang khas, selepas menghantar data yang dihantar oleh pengguna akan diproses mengikut kaedah fungsi checkAuthData (), dan, jika data itu betul, data pengguna akan disimpan dalam bentuk kuki rakaman untuk tempoh yang ditetapkan oleh pengguna, atau jika tiada nilai yang ditentukan untuk tempoh secara lalai.

Untuk menyemak ketulenan data yang disimpan dalam pembolehubah persekitaran $_COOKIE, kami akan menggunakan fungsi EatCookie(), yang akan mengesahkan data, mengembalikan hasil pengesahan boolean (true - false).

Saya tidak menyediakan borang untuk diserahkan, kerana ia bukan sebahagian daripada teori pengaturcaraan, hanya menentukan pengecam medan.

  • `ulogin` - log masuk pengguna
  • `upasswd` - kata laluan pengguna
  • `stime` - masa sesi yang ditetapkan oleh pengguna (dari 1 hingga 5 jam)
  • `auth` - serahkan nama butang

Di sini, secara umum, itu sahaja. Ia kekal hanya untuk mencuba, mencuba, membuat kesilapan dan mencari penyelesaian, yang saya serahkan sepenuhnya kepada anda.

Saya berharap kita akan bertemu tidak lama lagi, dan bagi mereka yang mempunyai soalan untuk saya mengenai artikel itu, dan bukan sahaja - tulis kepada [e-mel dilindungi], pada sama ada [e-mel dilindungi]

Yang ikhlas, Karpenko Kirill, Ketua Jabatan IT Institut Pengeluaran Perindustrian dan Perindustrian.

Menghantar Hujah kepada Fungsi Tersuai

Apabila mengisytiharkan fungsi, anda boleh menentukan senarai parameter yang boleh dihantar ke fungsi, contohnya:

fungsi fungsi ($a , $b , /* ..., */ $z ) { ... };
?>

Apabila memanggil fungsi funct(), anda mesti menentukan semua parameter yang dihantar, kerana ia diperlukan. Dalam PHP, fungsi yang ditentukan pengguna boleh mempunyai parameter pilihan atau lalai, tetapi lebih lanjut mengenainya kemudian.

Menurut tradisi yang ditetapkan, dalam semua bahasa pengaturcaraan terdapat dua jenis argumen fungsi:

  • parameter nilai;
  • parameter-pembolehubah.

Fungsi tidak boleh menukar parameter nilai, iaitu, ia tersedia baca sahaja untuk fungsi - ia boleh menggunakannya, tetapi tidak lebih. Ia tidak perlu untuk menentukan pembolehubah sebagai parameter nilai, anda boleh menentukan nilai itu sendiri, oleh itu nama - parameter nilai.

Secara lalai, argumen kepada fungsi diluluskan oleh nilai (yang bermaksud bahawa jika anda menukar nilai argumen di dalam fungsi, nilai di luar akan tetap sama). Berikut adalah contoh:

function($string)
{
bergema "

Parameter = $string

" ;
}

$str = 777 ;
function(777);
fungsi( $str);

// Fungsi "fungsi" akan mengeluarkan rentetan "Parameter = 777" dua kali

?>

Tidak seperti parameter nilai, parameter pembolehubah boleh ditukar semasa fungsi sedang berjalan. Di sini ia tidak lagi mungkin untuk lulus nilai, ia adalah perlu untuk lulus pembolehubah. PHP menggunakan mekanisme pembolehubah mengikut rujukan untuk mengisytiharkan parameter pembolehubah.

Jika anda ingin membenarkan fungsi mengubah suai hujahnya, anda mesti luluskannya melalui rujukan.

Jika anda mahu hujah sentiasa diluluskan melalui rujukan, anda mesti memasukkan ampersand (&) sebelum nama argumen dalam pengisytiharan fungsi:

fungsi (& $string )
{
$string .= "yang ini ada di dalam." ;
}
$str = "Barisan ini berada di luar fungsi,";
function($str);
echo $str ; // Mencetak "Barisan ini di luar fungsi, baris ini di dalam."
?>

Pilihan Lalai

Apabila pengaturcaraan, ia sering menjadi perlu untuk mencipta fungsi dengan bilangan parameter yang berubah-ubah. Terdapat dua sebab untuk ini:

  • Terdapat terlalu banyak parameter. Dalam kes ini, tidak masuk akal untuk menentukan semua parameter setiap kali;
  • Fungsi mesti mengembalikan nilai jenis yang berbeza bergantung pada set parameter.

Dalam PHP, fungsi boleh mengembalikan sebarang nilai bergantung pada parameter yang dihantar kepada mereka.

fungsi makecup ($jenis = "Teh")
{
kembali "Buat secawan $type.\n";
}
echo makecup();
echo makecup("Kopi");
?>

Output skrip ini akan kelihatan seperti ini:

Buat secawan teh
Buat secawan kopi

PHP juga membenarkan tatasusunan dan jenis khas NULL sebagai nilai lalai, seperti:

function makecup ($types = array("Coffee") ), $Maker = NULL )
{
$device = is_null ($Maker ) ? "gula" : $Maker ;
kembali "Buat secawan". sertai (", " , $types ). " dengan $peranti.\n" ;
}
echo makecup();
echo makecup (array("Kopi" , "Teh" ), "krim" );
?>

Skrip di atas akan mengeluarkan yang berikut:

Buat secawan kopi dengan gula. Buat secawan Kopi, Teh dengan krim.

Nilai lalai mestilah ungkapan malar.

Ambil perhatian bahawa semua argumen yang mempunyai nilai lalai mestilah berada di sebelah kanan argumen yang tidak mempunyai nilai lalai, jika tidak, kod anda mungkin tidak berfungsi seperti yang anda harapkan. Pertimbangkan contoh berikut:

fungsi makecup ($jenis = "teh" , $cond )
{
kembali;
}

Echo makecup("panas"); // Tidak akan berfungsi seperti yang kita jangkakan
?>

Hasil skrip di atas akan menjadi seperti ini:

Amaran: Hilang hujah 2 untuk makecup() dalam c:\inetpub\site\test.php dalam talian 2
Buat cawan panas.

Sekarang mari kita ubah suai skrip yang dipertimbangkan, membetulkan ralat di dalamnya:

fungsi makecup($cond , $type = "teh")
{
kembali"Buat cawan $type $cond.\n";
}

Echo makecup("panas"); // Sekarang skrip kami berfungsi dengan betul!
?>

Hasil skrip yang diperbetulkan akan kelihatan seperti ini:

Buat secawan teh panas.

Perhatian! Mulai PHP 5, nilai lalai boleh dihantar melalui rujukan!

Bilangan pembolehubah argumen dalam fungsi

Kadang-kadang kita tidak tahu dengan tepat berapa banyak parameter yang akan dihantar ke fungsi kita. Khusus untuk kes ini, pembangun PHP telah menyediakan kemungkinan menggunakan bilangan argumen yang berubah-ubah.

Pelaksanaan ciri ini agak telus dan terdiri daripada penggunaan fungsi func_num_args() , func_get_arg() Dan func_get_args() .

Pertimbangkan kemungkinan fungsi standard yang dipertimbangkan:

Fungsi Standard func_num_args() mengembalikan bilangan argumen yang dihantar ke fungsi tersuai:

fungsi()
{
$numargums = func_num_args();
bergema "Bilangan hujah: $numargums\n";
}

function(1 , 2 , 3 ); // Skrip akan mengeluarkan "Bilangan argumen: 3"
?>

Fungsi Standard func_get_arg() mengembalikan elemen daripada senarai argumen yang dihantar ke fungsi tersuai:

fungsi()
{
$numargs = func_num_args();
bergema "Bilangan hujah: $numargs
\n"
;
jika ($numargs >= 2 ) (
bergema "Hujah kedua:". func_get_arg (1 ). "
\n" ;
}
}

function(1 , 2 , 3 );
?>

Parameter dinyatakan dalam definisi fungsi, di dalam kurungan, dan merupakan pembolehubah setempatnya, i.e. mereka hanya kelihatan di dalam badannya, jika terdapat beberapa parameter, maka ia ditunjukkan dipisahkan dengan koma. Apabila dipanggil, fungsi boleh menerima hujah yang mana parameter dimulakan.

Kami telah mempertimbangkan parameter apa, sekarang kami akan belajar tentang nilai apa yang dimulakan. Nilai yang akan diberikan kepada parameter dipanggil argumen - ini boleh, sebagai contoh, rentetan atau integer literal, pembolehubah, atau beberapa ungkapan yang lebih kompleks yang terdiri daripada pembolehubah dan operator, tetapi yang boleh dinilai oleh PHP penterjemah untuk mendapatkan nilai yang parameter akan dimulakan. Ringkasnya, hujah ialah nilai yang dihantar kepada fungsi:

Meluluskan Hujah

PHP menyokong dua cara untuk menghantar argumen fungsi. Yang pertama ialah menghantar hujah mengikut nilai (berfungsi secara lalai), yang kedua menghantar hujah melalui rujukan. PHP juga menyokong nilai lalai. Sekarang mari kita lihat ketiga-tiga pilihan dengan lebih terperinci.

Secara lalai, argumen dihantar kepada fungsi mengikut nilai (ini bermakna jika anda menukar nilai parameter di dalam fungsi, nilai yang diluluskan akan kekal sama di luar fungsi):

$color color"; // Adakah nilai pembolehubah telah berubah?>

Jika anda ingin membenarkan fungsi mengubah suai argumen yang diluluskan di luarnya, anda mesti luluskannya melalui rujukan. Untuk membolehkan hujah diluluskan melalui rujukan, anda mesti menentukan tanda & (ampersand) sebelum nama parameter dalam definisi fungsi:

Fungsi boleh menentukan nilai argumen lalai. Untuk menetapkan nilai lalai, dalam definisi fungsi, semua yang anda perlu lakukan ialah menetapkan parameter kepada nilai yang dikehendaki:

\n"; ) echo tea(); // mencetak nilai lalai echo tea("hitam"); ​​?>

Nota: Semua parameter yang mempunyai nilai argumen lalai mestilah berada di sebelah kanan argumen yang tidak mempunyai nilai lalai, jika tidak, kod anda mungkin tidak berfungsi seperti yang diharapkan:

Nilai pulangan fungsi

Apabila fungsi tamat, ia boleh mengembalikan beberapa nilai (hasil fungsi) kepada program yang memanggilnya. Penyataan pulangan di dalam fungsi digunakan untuk menentukan nilai yang dikembalikan oleh fungsi. Nilai pulangan boleh menjadi apa-apa jenis. Ia mempunyai sintaks berikut:

kembali ungkapan;

Kenyataan pemulangan boleh diletakkan di mana-mana dalam fungsi. Apabila kawalan mencapainya, fungsi mengembalikan nilai (jika dinyatakan) dan menamatkan pelaksanaannya. Jika tiada pernyataan pulangan dinyatakan atau tiada nilai pulangan ditentukan, maka fungsi akan mengembalikan NULL . Untuk menggunakan nilai pulangan, hasil pelaksanaan fungsi boleh diberikan kepada pembolehubah, contohnya:

"; // => 16. function foo($num) ( if($num === 10) return "$num is equal to 10"; else return "$num is not equal to 10"; echo "hello" ; // baris kod ini tidak akan dilaksanakan ) echo foo(6); ?>

Pelanggan

Hujah Fungsi

Apakah hujah fungsi?

Hujah Fungsi disenaraikan dipisahkan dengan koma dalam kurungan selepas nama fungsi yang ditakrifkan dan merupakan pembolehubah setempatnya.

Nilai hujah boleh menjadi sebarang ungkapan yang dihantar ke fungsi untuk diproses dan boleh dinilai. Dalam kes ini, fungsi mungkin tidak mengambil sebarang hujah sama sekali, tetapi jika hujah itu ada, maka ia dinilai dari kiri ke kanan.

Melepasi hujah fungsi mengikut nilai dan rujukan

lalai argumen dihantar ke fungsi mengikut nilai, tetapi juga disokong meluluskan hujah dengan rujukan dan nilai lalai.

Apabila menghantar argumen mengikut nilai, nilai asal pembolehubah luar kekal malar apabila nilai argumen di dalam fungsi berubah. Jika diperlukan bahawa fungsi itu boleh mempengaruhi nilai pembolehubah luaran, adalah perlu untuk memberikan hujah kepadanya melalui rujukan. Ini dilakukan menggunakan simbol ampersand "&" sebelum nama hujah dalam perihalan fungsi (lihat contoh No. 1).

Contoh #1. Melepasi hujah fungsi mengikut nilai dan rujukan

Nilai Lalai Argumen Fungsi

Juga dalam PHP ia boleh digunakan untuk hujah fungsi lalai, yang merupakan nilai yang digunakan jika tiada nilai dihantar ke hujah yang diberikan apabila fungsi dipanggil. Untuk menetapkan nilai lalai argumen, adalah perlu untuk menetapkan nilai yang dikehendaki kepada argumen ini dalam definisi fungsi (lihat contoh No. 2). Dalam kes ini, nilai lalai boleh mempunyai kedua-dua argumen yang diluluskan oleh nilai dan argumen yang diluluskan oleh rujukan. Walau bagaimanapun, dalam apa jua keadaan, semua argumen yang diberikan nilai lalai mesti muncul dalam senarai selepas argumen yang tidak mempunyai nilai lalai. Di samping itu, hanya ungkapan malar, serta tatasusunan dan NULL , boleh digunakan sebagai nilai lalai. Anda tidak boleh menggunakan, sebagai contoh, pembolehubah atau panggilan fungsi.

Contoh #2. Menggunakan Nilai Argumen Lalai

Senarai argumen panjang berubah-ubah

Jika bilangan tepat argumen yang dihantar ke fungsi tidak diketahui terlebih dahulu, anda boleh gunakan senarai hujah panjang berubah-ubah. Senarai sedemikian dibentuk menggunakan pembolehubah khas yang didahului oleh elipsis "..." . Akibatnya, argumen akan dihantar kepada pembolehubah yang ditentukan sebagai tatasusunan (lihat contoh #3).

Contoh #3. Menggunakan Senarai Argumen Panjang Pembolehubah

Sebelum elipsis, anda boleh menentukan argumen biasa, manakala semua argumen lain yang dihantar ke fungsi akan dimasukkan dalam tatasusunan. Selain itu, sebelum elipsis, anda boleh menentukan jenis argumen yang boleh dimasukkan ke dalam tatasusunan, serta tanda ampersand "&" untuk menghantar hujah melalui rujukan (lihat contoh No. 4).

"; //Output 10 kerana nilai telah dihantar ke fungsi //dengan rujukan dan kemudian ditukar oleh fungsi kepada 10 echo $a_1; ?>

Contoh nombor 4. Ciri menggunakan senarai hujah panjang boleh ubah

Ia dibenarkan menggunakan elipsis "..." untuk mengembangkan tatasusunan yang diluluskan sebagai argumen fungsi ke dalam argumen fungsi dalam bentuk elemennya (lihat contoh #5).

"; // Berikan tatasusunan kepada pembolehubah $a_3=; // Kembangkan tatasusunan yang dihantar ke fungsi //Output 3 echo m_sum_2(...$a_3); ?>

Contoh nombor 5. Memperluas tatasusunan hujah yang dihantar ke fungsi apabila dipanggil

Fungsi Akses Hujah

  • func_get_args()- mengembalikan tatasusunan yang terdiri daripada argumen fungsi;
  • func_get_arg(n)- mengembalikan hujah fungsi yang ditentukan, dengan n=0,1,2,... - nombor hujah dalam senarai, yang bermula dari sifar (ingat bahawa hujah dikira dari kiri ke kanan);
  • func_num_args()- mengembalikan bilangan argumen yang sebenarnya dihantar ke fungsi.

"; //Paparkan nilai argumen ketiga yang dihantar ke fungsi echo func_get_arg(2); //Kembalikan jumlah argumen fungsi return $sum; ) //Panggil fungsi. Memaparkan 38, iaitu bilangan argumen yang diluluskan ialah 3, //dan nilai argumen ke-3 ialah 8 (penomboran elemen bermula dari sifar) m_sum(1,2,8); ?>

Contoh nombor 6. Menggunakan Fungsi Khas untuk Bekerja dengan Argumen

Ambil perhatian bahawa argumen fungsi juga boleh diakses menggunakan fungsi khas, terutamanya jika fungsi mengambil lebih banyak argumen daripada yang dijangka diterima (lihat contoh #6):

Lompat cepat ke halaman lain

http://laman web Hak Cipta © Petr Romanovsky, Minsk, 2016-2019.

Apa lagi yang perlu dibaca