この記事では、PHP の強力だがあまり使用されない関数を主に紹介し、関数の呼び出し、登録、呼び出し、判断などの操作スキルを含む、PHP のいくつかの非常に実用的な関数をサンプルの形式でまとめて分析します。困っている友達が参考になれば幸いです。
詳細は次のとおりです:
call_user_func_array — 配列形式のパラメーターを使用して関数を呼び出します
call_user_func — 既存の関数を呼び出します
create_function — 関数を作成します
func_get_arg — 関数内のパラメーターの値を取得します
func_get_args — 関数を取得します。 すべてのパラメーターは配列に結合されます。
func_num_args — 関数のパラメーターの数を取得します。
function_exists — 関数が存在するかどうかを判断します。
get_define_functions — 既存の関数情報を取得します。
register_shutdown_function — ページの後に実行される関数を登録します。ロードされています
register_tick_function — リクエストに応じて呼び出される関数を登録します
unregister_tick_function — リクエストに応じて呼び出される関数をキャンセルします
get_define_functions はすべての PHP 関数とカスタム関数を取得できます:
<?php function a(){} $b = get_defined_functions(); print_r($b); //也许会显示1000多个已定义了的函数:) ?>
function_exists 関数は、関数が存在するかどうかを判断します (PHP 関数の場合もあります)またはカスタム関数)。
<?php if (function_exists('a')) { echo "yes"; } else { echo "no"; } function a(){} // 显示 yes ?>
call_user_func 関数は、関数を呼び出す特殊なメソッドに似ています。 使用方法は次のとおりです。
<?php function a($b,$c) { echo $b; echo $c; } call_user_func('a', "111","222"); call_user_func('a', "333","444"); //显示 111 222 333 444 ?>
クラス内でメソッドを呼び出すのは実際には配列を使用します。もちろん、開発者がどう考えたかは省略します。 new にも新しいアイデアが満載です:
<?php class a { function b($c) { echo $c; } } call_user_func(array("a", "b"),"111"); //显示 111 ?>
call_user_func_array 関数は、パラメータが異なる方法で渡される点を除いて、call_user_func と非常に似ています。パラメータの明確化:
<?php function a($b, $c) { echo $b; echo $c; } call_user_func_array('a', array("111", "222")); //显示 111 222 ?>
call_user_func 関数と call_user_func_array 関数の両方が参照をサポートしているため、通常の関数呼び出しとの機能の一貫性が高まります:
<?php function a(&$b) { $b++; } $c = 0; call_user_func('a', &$c); echo $c;//显示 1 call_user_func_array('a', array(&$c)); echo $c;//显示 2 ?>
func_num_args 関数は、関数が受け取るパラメータの数を取得できます:
<?php function a() { echo func_num_args(); } a(111, 222, 333); //显示 3 ?>
func_get_arg 関数は、次の例では、関数内でどのパラメータが受け入れられるかは指定されていません:
<?php function a() { echo func_get_arg(1); } a (111, 222, 333); //显示 222 ?>
func_get_args 関数は func_get_arg とよく似ています。すべてのパラメータを配列として呼び出します:
<?php function a() { $numargs = func_num_args(); $b = func_get_args(); for ($i = 0; $i < $numargs; $i++) { echo $b[$i]; } } a(111, 222, 333); //显示 111 222 333 ?>
create_function 関数を作成できます。 無名関数 (PHP では関数名はデフォルトで lambda_1、lambda_2 です)、見た目は奇妙ですが、2 番目のステートメントが奇妙であることに注意してください。パラメーターは「;」で区切る必要があります:
<?php $newfunc = create_function('$a,$b', 'return $a + $b;'); echo $newfunc; echo $newfunc(2, 3); //显示 lambda_1 5 ?>
register_shutdown_function 関数は、ページがロードされた後に実行される関数を登録できます (この関数はキャッシュに少し似ています)。 register_shutdown_function は、次のようなクラスの内部メソッドを呼び出すために使用することもできます。 call_user_func 関数:
<?php function a() { echo 222 ; } echo 111; register_shutdown_function('a'); //显示 111 222 ?>
<?php class a { function b ($c) { echo $c; } } register_shutdown_function (array ('a', 'b'), '111'); //显示 111 ?>
register_tick_function と unregister_tick_function は、宣言プロセス制御メカニズムと組み合わせる必要があります。次に、まず宣言とティックについて理解しましょう:
declare (directive){ statement }
ティックは、インタープリターが宣言コード内の N 個の低レベルのステートメントを実行するたびに発生するイベントですセグメント。 Nの値はdeclareのディレクティブ部分のticks=Nで指定します。各ティックで発生するイベントは register_tick_function() によって指定されます。例は次のとおりです:
<? function foo($str) { static $i = 0; print "$str: $i<br>"; $i++; } register_tick_function("foo", "count"); declare (ticks = 6) { for($i=0; $i<20; $i++) { echo "$i<br>"; } } ?>
この例のdeclare(ticks = N){statement}プロセスコントロールでは、6行のコード(ticks = 6)が実行されるたびに、foo()関数を1回実行する必要があります。ティックの値を変更することで、異なる実行結果を得ることができます。
関連する推奨事項:
php 関数の使用方法と関数の定義方法_ P HPチュートリアル
以上がPHP のいくつかの強力だがめったに使用されない関数の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。