PHP的学习-可变函数
PHP的学习--可变函数
PHP 支持可变函数的概念。这意味着如果一个变量名后有圆括号,PHP 将寻找与变量的值同名的函数,并且尝试执行它。可变函数可以用来实现包括回调函数,函数表在内的一些用途。
可变函数不能用于例如 echo,print,unset(),isset(),empty(),include,require 以及类似的语言结构。需要使用自己的包装函数来将这些结构用作可变函数。
Example #1 可变函数示例
<span style="color: #000000;">php</span><span style="color: #0000ff;">function</span><span style="color: #000000;"> foo() { </span><span style="color: #0000ff;">echo</span> "In foo()<br>\n"<span style="color: #000000;">;}</span><span style="color: #0000ff;">function</span> bar(<span style="color: #800080;">$arg</span> = ''<span style="color: #000000;">) { </span><span style="color: #0000ff;">echo</span> "In bar(); argument was '<span style="color: #800080;">$arg</span>'.<br>\n"<span style="color: #000000;">;}</span><span style="color: #008000;">//</span><span style="color: #008000;"> 使用 echo 的包装函数</span><span style="color: #0000ff;">function</span> echoit(<span style="color: #800080;">$string</span><span style="color: #000000;">){ </span><span style="color: #0000ff;">echo</span> <span style="color: #800080;">$string</span><span style="color: #000000;">;}</span><span style="color: #800080;">$func</span> = 'foo'<span style="color: #000000;">;</span><span style="color: #800080;">$func</span>(); <span style="color: #008000;">//</span><span style="color: #008000;"> This calls foo()</span><span style="color: #800080;">$func</span> = 'bar'<span style="color: #000000;">;</span><span style="color: #800080;">$func</span>('test'); <span style="color: #008000;">//</span><span style="color: #008000;"> This calls bar()</span><span style="color: #800080;">$func</span> = 'echoit'<span style="color: #000000;">;</span><span style="color: #800080;">$func</span>('test'); <span style="color: #008000;">//</span><span style="color: #008000;"> This calls echoit()</span>?>
也可以用可变函数的语法来调用一个对象的方法。
<span style="color: #000000;">php</span><span style="color: #0000ff;">class</span><span style="color: #000000;"> Foo{ </span><span style="color: #0000ff;">function</span><span style="color: #000000;"> Variable() { </span><span style="color: #800080;">$name</span> = 'Bar'<span style="color: #000000;">; </span><span style="color: #800080;">$this</span>-><span style="color: #800080;">$name</span>(); <span style="color: #008000;">//</span><span style="color: #008000;"> This calls the Bar() method</span><span style="color: #000000;"> } </span><span style="color: #0000ff;">function</span><span style="color: #000000;"> Bar() { </span><span style="color: #0000ff;">echo</span> "This is Bar"<span style="color: #000000;">; }}</span><span style="color: #800080;">$foo</span> = <span style="color: #0000ff;">new</span><span style="color: #000000;"> Foo();</span><span style="color: #800080;">$funcname</span> = "Variable"<span style="color: #000000;">;</span><span style="color: #800080;">$foo</span>-><span style="color: #800080;">$funcname</span>(); <span style="color: #008000;">//</span><span style="color: #008000;"> This calls $foo->Variable()</span>?>
当调用静态方法时,函数调用要比静态属性优先:
Example #3 Variable 方法和静态属性示例
<span style="color: #000000;">php</span><span style="color: #0000ff;">class</span><span style="color: #000000;"> Foo{ </span><span style="color: #0000ff;">static</span> <span style="color: #800080;">$variable</span> = 'static property'<span style="color: #000000;">; </span><span style="color: #0000ff;">static</span> <span style="color: #0000ff;">function</span><span style="color: #000000;"> Variable() { </span><span style="color: #0000ff;">echo</span> 'Method Variable called'<span style="color: #000000;">; }}</span><span style="color: #0000ff;">echo</span> Foo::<span style="color: #800080;">$variable</span>; <span style="color: #008000;">//</span><span style="color: #008000;"> This prints 'static property'. It does need a $variable in this scope.</span><span style="color: #800080;">$variable</span> = "Variable"<span style="color: #000000;">;Foo</span>::<span style="color: #800080;">$variable</span>(); <span style="color: #008000;">//</span><span style="color: #008000;"> This calls $foo->Variable() reading $variable in this scope.</span>?>
可以使用可变函数的方法列表如下:
<span style="color: #000000;">php</span><span style="color: #008080;">array_diff_assoc</span><span style="color: #000000;">()array_diff_key()</span><span style="color: #008080;">array_diff_uassoc</span><span style="color: #000000;">()</span><span style="color: #0000ff;">array</span><span style="color: #000000;">()array_intersect_ukey()</span><span style="color: #008080;">array_map</span><span style="color: #000000;">()</span><span style="color: #008080;">array_merge</span><span style="color: #000000;">()</span><span style="color: #008080;">array_merge_recursive</span><span style="color: #000000;">()</span><span style="color: #008080;">array_multisort</span><span style="color: #000000;">()</span><span style="color: #008080;">array_push</span><span style="color: #000000;">()array_replace()array_replace_recursive()</span><span style="color: #008080;">array_unshift</span><span style="color: #000000;">()</span><span style="color: #008080;">call_user_func</span><span style="color: #000000;">()</span><span style="color: #008080;">call_user_method</span><span style="color: #000000;">()</span><span style="color: #008080;">compact</span><span style="color: #000000;">()dba_open()dba_popen()</span><span style="color: #0000ff;">echo</span><span style="color: #000000;">()forward_static_call()</span><span style="color: #008080;">fprintf</span><span style="color: #000000;">()</span><span style="color: #008080;">fscanf</span><span style="color: #000000;">()httprequestpool_construct()ibase_execute()ibase_set_event_handler()ibase_wait_event()</span><span style="color: #0000ff;">isset</span><span style="color: #000000;">()</span><span style="color: #0000ff;">list</span><span style="color: #000000;">()maxdb_stmt_bind_param()maxdb_stmt_bind_result()mb_convert_variables()newt_checkbox_tree_add_item()newt_grid_h_close_stacked()newt_grid_h_stacked()newt_grid_v_close_stacked()newt_grid_v_stacked()newt_win_choice()newt_win_entries()newt_win_menu()newt_win_message()newt_win_ternary()</span><span style="color: #008080;">pack</span><span style="color: #000000;">()</span><span style="color: #008080;">printf</span><span style="color: #000000;">()</span><span style="color: #008080;">register_shutdown_function</span><span style="color: #000000;">()</span><span style="color: #008080;">register_tick_function</span><span style="color: #000000;">()</span><span style="color: #008080;">session_register</span><span style="color: #000000;">()</span><span style="color: #008080;">setlocale</span><span style="color: #000000;">()</span><span style="color: #008080;">sprintf</span><span style="color: #000000;">()</span><span style="color: #008080;">sscanf</span><span style="color: #000000;">()</span><span style="color: #0000ff;">unset</span><span style="color: #000000;">()</span><span style="color: #008080;">var_dump</span><span style="color: #000000;">()w32api_deftype()w32api_init_dtype()w32api_invoke_function()</span><span style="color: #008080;">wddx_add_vars</span><span style="color: #000000;">()</span><span style="color: #008080;">wddx_serialize_vars</span>()
摘自:http://php.net/manual/zh/functions.variable-functions.php

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Fungsi bermaksud fungsi. Ia adalah blok kod yang boleh digunakan semula dengan fungsi tertentu Ia boleh menerima parameter input, melakukan operasi tertentu, dan mengembalikan hasil daripada blok yang boleh digunakan semula. kod untuk meningkatkan kebolehgunaan semula dan kebolehselenggaraan kod.

Tajuk: Contoh menggunakan fungsi Array.Sort untuk mengisih tatasusunan dalam Teks C#: Dalam C#, tatasusunan ialah struktur data yang biasa digunakan dan operasi pengisihan tatasusunan selalunya diperlukan. C# menyediakan kelas Array, yang mempunyai kaedah Isih untuk menyusun tatasusunan dengan mudah. Artikel ini akan menunjukkan cara menggunakan fungsi Array.Sort dalam C# untuk mengisih tatasusunan dan memberikan contoh kod khusus. Pertama, kita perlu memahami penggunaan asas fungsi Array.Sort. Susunan.Jadi

Dalam artikel ini, kita akan belajar tentang fungsi enumerate() dan tujuan fungsi "enumerate()" dalam Python. Apakah fungsi enumerate()? Fungsi enumerate() Python menerima pengumpulan data sebagai parameter dan mengembalikan objek penghitungan. Objek penghitungan dikembalikan sebagai pasangan nilai kunci. Kuncinya ialah indeks yang sepadan dengan setiap item, dan nilainya ialah item. Syntax enumerate(iterable,start) Parameters iterable - Yang diluluskan dalam pengumpulan data boleh dikembalikan sebagai objek enumeration, dipanggil iterablestart - Seperti namanya, indeks permulaan objek enumeration ditakrifkan oleh permulaan. kalau kita abaikan

Penjelasan terperinci tentang peranan dan fungsi jadual MySQL.proc ialah sistem pengurusan pangkalan data relasi yang popular Apabila pembangun menggunakan MySQL, mereka sering melibatkan penciptaan dan pengurusan prosedur tersimpan (StoredProcedure). Jadual MySQL.proc ialah jadual sistem yang sangat penting Ia menyimpan maklumat yang berkaitan dengan semua prosedur tersimpan dalam pangkalan data, termasuk nama, definisi, parameter, dsb. prosedur tersimpan. Dalam artikel ini, kami akan menerangkan secara terperinci peranan dan kefungsian jadual MySQL.proc

Dalam PHP, terdapat banyak fungsi tatasusunan berkuasa yang boleh menjadikan operasi tatasusunan lebih mudah dan lebih pantas. Apabila kita perlu menggabungkan dua tatasusunan ke dalam tatasusunan bersekutu, kita boleh menggunakan fungsi array_combine PHP untuk mencapai operasi ini. Fungsi ini sebenarnya digunakan untuk menggabungkan kekunci satu tatasusunan sebagai nilai tatasusunan lain ke dalam tatasusunan bersekutu baharu. Seterusnya, kami akan menerangkan cara menggunakan fungsi array_combine dalam PHP untuk menggabungkan dua tatasusunan menjadi tatasusunan bersekutu. Ketahui tentang array_comb

Apabila pengaturcaraan dalam PHP, kita selalunya perlu menggabungkan tatasusunan. PHP menyediakan fungsi array_merge() untuk melengkapkan penggabungan tatasusunan, tetapi apabila kunci yang sama wujud dalam tatasusunan, fungsi ini akan menimpa nilai asal. Untuk menyelesaikan masalah ini, PHP juga menyediakan fungsi array_merge_recursive() dalam bahasa, yang boleh menggabungkan tatasusunan dan mengekalkan nilai kunci yang sama, menjadikan reka bentuk program lebih fleksibel. array_merge

Untuk pembangun PHP, menemui mesej amaran "Undefinedvariable" adalah perkara yang sangat biasa. Keadaan ini biasanya berlaku apabila cuba menggunakan pembolehubah yang tidak ditentukan, yang akan menyebabkan skrip PHP gagal dilaksanakan secara normal. Artikel ini akan memperkenalkan cara menyelesaikan masalah "PHPNotice:Undefinedvariable: in solution". Punca masalah: Dalam skrip PHP, jika pembolehubah tidak dimulakan atau diberikan nilai, "Un

Dalam pengaturcaraan PHP, tatasusunan ialah struktur data yang sangat penting yang boleh mengendalikan sejumlah besar data dengan mudah. PHP menyediakan banyak fungsi berkaitan tatasusunan, array_fill() adalah salah satu daripadanya. Artikel ini akan memperkenalkan secara terperinci penggunaan fungsi array_fill(), serta beberapa petua dalam aplikasi praktikal. 1. Gambaran keseluruhan fungsi array_fill() Fungsi array_fill() adalah untuk mencipta tatasusunan nilai yang sama dengan panjang yang ditentukan. Secara khusus, sintaks fungsi ini ialah
