PHP関数の基本構文 カスタム関数
PHP は強力な関数を提供しますが、プログラマーが必要に応じて関数を自分で作成できるわけではありません。このセクションでは、関数の作成方法を学び始めます。
実際の開発プロセスでは、繰り返し使用する必要のある関数が多数必要になりますが、繰り返し使用する必要がある関数は、可能な限り関数(関数)として定義することができます。使用するときは名前を叫ぶだけです。
次に、カスタム関数の文法規定を学習しましょう。 文法規定は次のとおりです。
function 函数名([参数名1[=值1], 参数名2[=值2], 参数名n[=值n]]) { 函数中的功能体 [return 返回值] }
上記の文法規定には次の特徴が見つかり、次のような不特定の言語が生成されます。
1. 関数は関数
で始まります。2. 関数の後にスペースが続き、スペースの後に関数名が続きます
3. 関数名と変数の命名規則は基本的に同じですが、違いは次のとおりです: 関数名では大文字と小文字が区別されません。いわゆるパラメータは実際には変数です。 5. 関数名の後に括弧が続き、パラメータはすべて [] (角括弧) で囲まれます。これは、パラメータが入力できるかどうかを意味します。 6. パラメータがある場合、パラメータの後に等号 (=) を続けることができ、等号の後にデフォルト値が続きます。パラメーター値も [] (角括弧) で囲まれており、オプションを表します
7. 関数の後のパラメーター変数の主な機能は、関数の外にある変数値を関数本体に渡すことです。関数本体内の変数と関数本体外の変数は通常、2 つの異なる変数です。
8. 関数内の特定の関数 (関数本体) は中括弧で囲まれています。これは、これが関数の関数範囲であることを意味します
9. 関数は戻り値を持つことも、戻り値を持たないこともあり、[ で囲まれます) ] (角括弧) 上にある場合は、オプションであることを意味します。
10. Return の後にスペースがあり、Return の後にスペースが続く場合、Return の後のコードは実行されません。
11. 関数の実行には順序関係がなく、定義の前に呼び出すことができます
12. 関数を 2 回定義することはできません。つまり、関数をオーバーロードすることはできません
覚えておいてください: さらに記述する必要もあります実験するためのコードです!
これらの点は実験を通じて少しずつ証明していきます。 1. 関数はどこに呼び出しても、あなたに従います
<?php function php_cn(){ echo '我是一条狗'; } php_cn(); php_cn(); php_cn(); ?>
php_cn。この関数は次の 3 つの段落を表示します。
2 関数名
には、文字、数字、アンダースコアの組み合わせのみを使用できます。変数名の先頭に数字を入れることはできません。<?php function 1demo(){ } ?>
上記のコードはエラーを報告します。関数の名前と変数の名前付け3. 関数名と変数の名前付け規則は同じですが、違いは、関数名では大文字と小文字が区別されないことです
<?php function Demo(){ echo '如果是写代码的男人,我们需要更加承担来自家庭的责任<br />'; } demo(); Demo(); DEMO(); ?>
上記のコードを実行すると、次の 3 行が表示されることがわかります。コードを書いているのが男性である場合、家族はもっと責任を取る必要があります
。
つまり、関数名は呼び出されるときに大文字と小文字が区別されません。関数は、その名前を繰り返し呼び出し、繰り返し実行できます。再利用の特性も反映されています。
4. 関数本体のパラメータが定義されていてパラメータが渡されていない場合、コードはエラーを報告します
<?php //定义函数名为test,必须要传入一个参数 function test($hello){ } test(); ?>
自分で段落を書いて試してみてください。エラーが報告されますか?
5. 関数の後のパラメータにデフォルト値がある場合、パラメータを入力する必要はなく、コードはエラーを報告しません
<?php function test( $arg = 10){ echo $arg; } test(); test(88); ?>
エラーはありませんか?そして10と表示されて出てきました。
パラメータが渡されると、それらは関数に取り込まれることに注意してください。関数がパラメータを渡さない場合は、パラメータの後のデフォルト値が使用されます。
6. 関数の後に複数のパラメータを記述することができます
<?php function test( $a , $b = 20 , $c = 30){ echo $a + $b + $c; } test( 1 , 2 , 3 ); ?>
上記のコードを自分で記述してください。複数のパラメータを渡しましたか?
7. 関数の後にデフォルト値のあるパラメータとデフォルト値のないパラメータがある場合、通常はデフォルト値のないパラメータが前に書かれます
前の3と4の実験では、デフォルト値がこのパラメータを表すことがわかりました。値を渡す必要はありません。デフォルト値がない場合、コードはエラーを報告します。つまり、デフォルト値のないパラメータを渡す必要があります。次の例を見てみましょう:
<?php function test( $a = 20 , $b = 30 , $c ){ echo $a + $b + $c; } //重点:重点看这一行执行一下 test( , , 8 ); ?>
上記の例を通じて、上記のコードの実行時に別のエラーが報告されたことがわかりました。つまり、上記の構文は機能しません。
上記の構文で期待しているのは、パラメーター $a とパラメーター $b の値を渡さないことです。パラメータ $c を渡す必要があります。ここでは 8 を渡しました。しかし、PHP の文法規則により、これを書くことはできません。したがって、記述方法を変更することで同じ効果を得ることができます:
<?php function test( $c , $a = 20 , $b = 30){ echo $a + $b + $c; } //重点:重点看这一行执行一下 test( 8 ); ?>
上記の実験例を通して、パラメーター $c を渡しても、コードがエラーを報告しないことがわかりましたか。パラメータ $a = 20 およびパラメータ $b = 30 もコード $a + $b + $c に組み込まれます。
8. 関数本体内の変数と関数外の変数の間には関係がない
<?php //定义变量$hello的值为10 $hello = 10; //函数后的参数(形式上的参数,参数)处写上变量名为$hello function demo( $hello ){ //形参带入了函数体内,函数体内变量$hello 改为了 250 $hello = 250; //输入2个250相加的结果 echo $hello + $hello; } //将函数体外的变量$hello,传入变量的参数处(实际传入的参数,实参),显示出的结果为500 demo($hello); //此处$hello的值输出,依然为10 echo $hello; ?>
上記の例を通して、仮パラメータと実パラメータの間に変化点の関係がないことがわかりました。関数本体で渡される仮パラメータがどのように変更されても、実際のパラメータ $hello の実際の結果には影響しません。
9. 関数本体にreturnがあると、return以降のコードは実行されません
<?php function demo(){ echo 111; return; echo 222; } demo(); ?>
お気づきですか? ——111のみ出力されます。
10. returnは関数本体の値を関数本体から取り出すことができます
<?php //定义一条函数狗 function php_cn(){ $foo = 5; $bar = 6; $result = $foo + $bar; //将$result的结果进行返回 return $result; } //调用php_cn()这个函数,$foo和$bar相加的$result就会返回回来给到变量$piao $piao = php_cn(); //输出$piao的结果,果真为11 echo $piao; ?>
11. 関数の実行には順序関係はありません。定義前の位置
<?php demo(); function demo(){ $str = '爸爸妈妈年龄越来越大'; $str .= '大多数的孩子都是独生子女,更加应该负起责任'; echo $str; } demo(); ?>
上記により、この例では、関数が定義される前でも後でも呼び出せることが分かりました。つまり、関数はどこからでも呼び出すことができます。
11. 関数はオーバーロードできません
<?php function demo(){ } function demo(){ } //试试会报错吗? ?>
上記の例でエラーが報告されたことがわかりました。つまり、同じ名前の関数を2回定義することはできず、そうでない場合はエラーが報告されます
代入:
1. 2 層ループを定義し、1 行おきに色を変更します
2. このフォームは必須です。デフォルト値は 10 と 10 で、色の 1 つはデフォルト パラメータで、もう 1 つはデフォルト パラメータがありません
3. テーブルの文字列を返します