You渡されました:
$param1: $param1
$param3: $param3
param4 < br/> } //
//
$a = 54; my_new_function($ userName, 6.22e23, pi(), $a or $b);
?>
参照渡し: デフォルトでは、変数の値のみが関数に渡されます。したがって、このパラメーターまたは変数への変更は、関数内でローカルでのみ有効です
コードをコピーします
コードは次のとおりです。
$x = 10
echo "$x is: $x
n";
function change_parameter_value($param1)
{
$param1 = 20;
}
echo "$x は: $x
n";
?>
出力: $ x は : 10 $x は :10 関数が値のコピーを単に処理するのではなく、渡された変数を実際に変更することが目的の場合は、参照によって渡された関数を使用できます。これは、& 文字を使用して実行されます
コードをコピーします
コードは次のとおりです:
function increment_variable(&$increment_me)
{
if (is_int($increment_me) | | is_float($increment_me))
{
$increment_me += 1;
}
$x = 20.5;
echo "$x は: $x
n" // 20.5 を出力します。 (&$x ); echo "$x is now: $x
n"; // デフォルトの引数値と呼ばれる 21.5 コードをコピーします以下の通り:
function Perform_sort($arrayData, $param2 = "qsort")
{
switch ($param)
{
case "qsort":
qsort($arrayData); ":
insertion_sort($arrayData);
break;
default:
bubble_sort($arrayData);
break;
}
}
?>
パラメータの可変数:
phpは任意の数のパラメータを置くことができます。関数に、そしてfunc_num_args、func_get_arg、func_get_argsを使用してパラメーター値を取得します
コードは次のとおりです。コードは次のとおりです。 func_get_args() ; foreach ($all_parameters as $index => $value) { echo "パラメータ $index の値は $value
n" }
echo "-----
n "; }
print_parameter_values(1, 2, 3, "fish");
print_parameter_values();
?>
3.1.3 関数からの戻り値
その他の言語終了する前に一部のコードのみを実行する コードを実行して呼び出し元に値を返す関数であるサブルーチンとは異なり、すべての PHP 関数は呼び出し元に戻るときに値が関連付けられています。明示的な戻り値のない関数の場合、戻り値は null です
コードをコピー
コードは次のとおりです:
function dos_nothing()
{
} $ret = dos_nothing() ; echo '$ret: ' . (is_null($ret) ? '(null)' : $ret) 非 null を返したい場合、それを返すには return を使用します 式に関連付けられています
コードをコピーします
コードは次のとおりです:
function is_even_number($number)
{
if (($number % 2) = = 0)
return TRUE; else return FALSE; ?> 関数から複数の値を返したい場合は、結果を配列として返すのが便利です
コードをコピーします
コードは次のとおりです:
< ;?php
function get_user_name($userid)
{
//
// $all_user_data は一時的に保持するローカル変数 (配列) です
//ユーザーに関するすべての情報
// $all_user_data = get_user_data_from_db($ userid); // // この関数が返された後、$all_user_data は存在しなくなり、値がなくなりました // return $ all_user_data["UserName"];
} ?>
3.1 .4 関数内の変数スコープ
関数レベルの変数:
それらは宣言された関数内で有効であり、その値は記憶されません関数呼び出しの間
コードをコピーします
コードは次のとおりです:
php
$name = "Fatima"
echo "$name: $name
n"; function set_name($new_name)
{
echo "$name: $name
n";
$name = $new_name;
set_name("Giorgio"); br/>n";
?> 静的変数: static は、関数呼び出し間で値を変更しないようにするための変数のプレフィックスです。変数が宣言されたときに値が割り当てられている場合、実行時に現在のスクリプトでは、PHP はこの変数に初めて遭遇したときのみ割り当てを実行します
コードをコピーします
コードは次のとおりです:
function increment_me()
{
//値は 1 回だけ 10 に設定されます。 ?>
スクリプト内で宣言された変数 (「グローバル変数」)
コードをコピーします
コードは次のとおりです: < ;?php $name = "Fatima"; $name: $name
n";
function set_name($new_name) {
echo "$name: $name
n ";
$name = $new_name;
}
set_name( "ジョルジオ");
エコー "$name: $name>n";
l 出力結果:
$name: Fatima
$name:
$name: Fatima
内部群関数にグロバが追加された場合、出力結果
$name: Fatima
$name: Fatima
$name: Giorgio
3.1.5 関数のスコープと可用性
3.1.6 関数を変数として使用する
コードをコピーする コードは次のとおりです:
function Log_to_File($message)
{
// openファイルを作成してメッセージを書き込みます
}
function Log_to_Browser($message)
{
// echo または print 関数を使用して出力します
}
function Log_to_Network($message)
{
// サーバーに接続してメッセージを印刷します
}
//
// 現在デバッグ中なので、画面に書き込むだけです
//
$log_type = "Log_to_Browser"
//
// これで、残りのコード全体で
// を呼び出すことができます。 $log_type(message) を変更するには、単に
// 上記の変数の割り当てを変更します!
//
$log_type("beginning debug Output"); ただし、PHP には、これを実行できない言語構造が多数含まれています。この構造の明白な例は、echo、print、var_dump、print_r、isset、unset、is_null is_type です
3.2 中間コードの再利用: ファイルの使用と組み込み
3.2.1 コードをファイルに整理する
共通機能をグループ化する: If多くの関数を 1 つの場所 (通常はファイル、つまりコード ライブラリ) に保存します
一貫したインターフェイスを生成します
コードをコピーします
コードは次のとおりです: //円は (x, y) + 半径です
function compute_circle_area($x, $y, $radius)
{
return ($radius * pi() * pi())
}
functioncircle_move_location(&$y, & $x , $deltax, $deltay)
{
$x += $deltax;
$y += $deltay;
}
function compute_circumference_of_circle($radius)
{
return array("Circumference" => 2 * $radius * pi());
}
?>
これらの関数を一貫した名前、パラメーターの順序、戻り値で使用すると、コードの失敗や欠陥の可能性を大幅に減らすことができます。
コードをコピーします
コードは次のとおりです: //
// このファイル内のすべてのルーチンは、円が
// の配列として渡されることを前提としています:
// "X" = > pi();
function Circles_compute_circumference($circle)
{
return 2 * $circle["Radius"] * pi()
}
// $circle は BY REFERENCE で渡されます変更されました!!!
関数 Circles_move_circle(&$circle, $deltax, $deltay)
$circle["X"] += $deltax;
$circle["Y"] += $deltay; >
3.2 .2 ファイル名と場所の選択
Web ユーザーが .inc ファイルを開けないようにするには、2 つのメカニズムを使用します。まず、構成するドキュメント ディレクトリ ツリーで、Web サーバーが次のことを行うようにします。ユーザーに参照やロードを許可しないでください
第 16 章 Web アプリケーションの保護で説明されているこれらの操作を実行してから、ユーザーが .php および .html ファイルを参照できるようにブラウザを設定しますが、.inc ファイルは参照できないようにします
この問題を防ぐ 2 番目の方法は、コードをドキュメント ツリーに配置したり、他のディレクトリに保存したりせず、コード内でこのディレクトリを明示的に参照して、常にこのディレクトリを参照するように PHP に指示することです
3.2.3 ライブラリ ファイルを次の場所に含めるスクリプト
include と require、この 2 つの違いは、require はファイルが見つからない場合にエラーを出力するのに対し、include は警告を出力することです。
コードをコピーします
コードは次のとおりです:
require('i_dont_exit.inc');
include と require でファイルを探します
明示的なパスを指定できます:
require("/home/httpd/lib/frontend/table_gen.inc');
require('http://www.cnblogs.com/ lib /datafuncs.inc');
require(d:webappslibsdataconnetions.inc');
明示的なパスが指定されていない場合、php は現在のディレクトリに含まれるファイルを探し、php 内の include_path 設定を探します。 .ini ファイルをディレクトリから取り出します。
Windows では、 include_path=".;c:phpinclude;d:webappslibs" になります。
include と require の内容はすべて含まれています。 script タグ内の は、一般的な php スクリプト処理と同様です。
リスト 3-1 とリスト 3-2 は、インクルードするための php スクリプトと単純なファイルを示します。
リスト 3-1
3.2.4 ページのテンプレート化にインクルードを使用する
サンプル
$message = "こんにちは、パードナー";
include( 'printmessage.inc');