{php関数}

WBOY
WBOYオリジナル
2016-06-23 14:36:16964ブラウズ

ユーザー定義関数 パラメーターの戻り値 変数関数 内部 (組み込み) 関数 無名関数 1. ユーザー定義関数

関数は次の構文で定義できます:

関数内には有効な PHP コードを含めることができます 内部的には、他の関数やクラス定義も含まれます。

関数名には、PHP の他の識別子と同じ命名規則があります。有効な関数名は文字またはアンダースコアで始まり、その後に文字、数字、またはアンダースコアが続きます。

は正規表現: [a-zA-Z_x7f-xff][a-zA-Z0-9_x7f-xff]* で表すことができます。

Example #

                           <p class="sycode">                        <?        phpfunction foo($arg_1, $arg_2, ..., $arg_n){          //        逻辑代码                 echo         "        Example function.\n        "        ;         return         $retval;}        ?>                           </p>

例 #2 条件関数 (条件関数)

                           <p class="sycode">                        <?        php$makefoo         =                 true        ;        /*         我们不能在处调用foo()函数, 因为它还不存在,但可以调用bar()函数。        */        bar();        if         ($makefoo) { function foo() { echo         "        I don't exist until program execution reaches me.\n        "        ; }}        /*         现在我们可以安全调用函数 foo()了, 因为 $makefoo 值为真         */                if         ($makefoo) foo();function bar(){ echo         "        I exist immediately upon program start.\n        "        ;}        ?>                           </p>


例 #3 関数内の関数

                           <p class="sycode">                        <?        phpfunction foo(){ function bar() { echo         "        I don't exist until foo() is called.\n        "        ; }}        /*         现在还不能调用bar()函数,因为它还不存在         */        foo();        /*         现在可以调用bar()函数了,因为foo()函数 的执行使得bar()函数变为已定义的函数         */        bar();        ?>                           </p>

PHP のすべての関数とクラスにはグローバル スコープがあり、内部で定義して外部から呼び出すことができ、またその逆も可能です。

PHP は関数のオーバーロードをサポートしておらず、宣言された関数を定義解除または再定義することはできません。

注: 関数名では大文字と小文字が区別されませんが、関数を呼び出すときは、通常、関数が定義されたときと同じ形式が使用されます。

注: アクセス許可はクラス内の関数にのみ追加できます。

PHP は、可変数のパラメーターとデフォルトのパラメーターをサポートしています。詳細については、func_num_args()、func_get_arg()、および func_get_args() を参照してください。

例 #4 再帰関数

再帰関数は PHP で呼び出すことができます。ただし、スタックが破損し、現在のスクリプトが終了する可能性があるため、100 ~ 200 レベルを超える再帰的な関数/メソッド呼び出しは避けてください。

                           <p class="sycode">                        <?        phpfunction recursion($a){         if         ($a         <                 20        ) { echo         "        $a\n        "        ; recursion($a         +                 1        ); }}        ?>                           </p>

例 #5 コールバック関数

                           <p class="sycode">                        <?        phpfunction foo(        &        $bar)        //        关键是参数前加个&                { $bar        =        '        2        '        ;}$str        =        '        1        '        ;foo($str);echo $str;         //        输出2                ?>                           </p>


2. 関数パラメータ

情報は、カンマで区切られた式のリストであるパラメータ リストを通じて関数に渡すことができます。

PHP は、値によるパラメーターの受け渡し (デフォルト)、参照によるパラメーターの受け渡し、およびデフォルトのパラメーターをサポートしています。可変数のパラメーターもサポートしています

詳細については、可変長パラメーターのリストと関連関数 func_num_args()、func_get_arg()、および func_get_args() を参照してください。

例 #1 function&

                                        <p class="sycode">                                  <?            phpfunction takes_array($input){ echo             "            $input[0] + $input[1] =             "            , $input[            0            ]            +            $input[            1            ];}$shit            =            "            123            "            ;takes_array($shit)            ?>                                        </p>                                                            <p class="sycode">                                  输出:1 + 2 = 3                                        </p>
に配列を渡す

パラメータを参照で渡す デフォルトでは、関数パラメータは値によって渡されます (パラメータの値が内部で変更されたとしても)関数の外では値は変更されません)。関数がその引数値を変更できるようにするには、引数を参照渡しする必要があります。

関数のパラメーターを常に参照によって渡したい場合は、関数定義のパラメーターの前に記号 & を追加できます:

例 #2 関数のパラメーターを参照によって渡す

                               <p class="sycode">                           <?         phpfunction add_some_extra(         &         $         string         ){ $         string          .         =                   '         and something extra.         '         ;}$str          =                   '         This is a string,          '         ;add_some_extra($str);echo $str;          //          $str的值被改变:outputs 'This is a string, and something extra.'                  ?>                               </p>

デフォルトパラメータの値例 #3 関数内でデフォルトパラメータを使用する

                                             <p class="sycode">                                      <?              phpfunction makecoffee($type               =                             "              cappuccino              "              ){               return                             "              @ $type;\n              "              ;}echo makecoffee();                                             </p>                                             <p class="sycode">                                      echo makecoffee(              null              );//PHP 还允许使用数组和特殊类型 NULL 作为默认参数,例如:echo makecoffee(              "              espresso              "              );              //              @ cappuccino; @ ; @ espresso;                            ?>                                             </p>

例 #4 デフォルトパラメータとして非スカラー型を使用する

0eafe1b82fcb5d861a7c732887b08dc4

Closure 関数は変数の値としても使用できます。 PHP は式を組み込みクラス Closure のオブジェクト インスタンスに自動的に変換します。クロージャオブジェクトを変数に代入する方法は通常の変数代入の構文と同じで、最後にセミコロンも追加されます。

例 #2 匿名関数変数の割り当ての例

723ab4e4c12cb8191fb2cf768445c2b6 products, $callback);
returnround($total, 2);;
}
}
$my_cart = new Cart;

// ショッピングカートに商品を追加します
$my_cart->add( 'butter' , 1);
$my_cart->add('milk', 3);

// 5% の消費税を含む合計価格を出力します。
print $my_cart->getTotal(0.05) . "n";
// 結果は 54.29
?>



匿名関数は現在 Closure クラスを通じて実装されています。現時点では不安定であり、正式な開発には適していません。

注: 匿名関数は、PHP 5.3.0 以降でのみ使用できます。

注: func_num_args()、func_get_arg()、func_get_args() などの関数をクロージャ内で呼び出してパラメータ情報を取得できます。



~

~





声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。