ホームページ >バックエンド開発 >PHPチュートリアル >PHPのカスタム関数と内部関数の解説
1. 変数スコープ
変数のスコープとも呼ばれます。変数のスコープは、変数が定義されているコンテキスト (有効スコープでもあります) です。
ほとんどの PHP 変数には 1 つのスコープしかなく、この 1 つのスコープの範囲も同様です。導入された include ファイルと require ファイルが含まれます。
グローバル キーワード: 関数内で global キーワードを使用してグローバル変数にアクセスできます
$GLOBALS やその他のスーパーグローバル配列も使用できます
例:
$str = 'xxxx'; function test(){ //方法一: global $str; echo $str; //方法二 //echo $GLOBALS['str'] }
2. 静的変数
静的変数は単なるローカル関数ドメインに存在しますが、プログラムの実行がこのスコープを離れてもその値は消えません
静的キーワード
初期化されるのは一度だけです
初期化中に値を割り当てる必要があります
関数が実行されるたびに値が保持されます実行される
静的に変更された変数はローカルであり、関数内でのみ有効です
関数の呼び出し数を記録できるため、特定の条件下で再帰を終了できます
2.1、グローバル変数、静的変数
<?php /** * 写出如下程序的输出结果: * <?php * * $count = 5; * function get_count() * { * static $count; * return $count++; * } * echo $count; * ++$count; * * echo get_count(); * echo get_count(); * * ?> * */ $count = 5; function get_count() { static $count; return $count++; } echo $count;//5 ++$count; //这里还涉及到运算符:递减NULL值没有效果,但是递增NULL值为1 echo get_count();//null,第一次定义的static $count,内容为null,现返回内容null,再null++,结果为1 echo get_count();//1,static $count = 1,现返回1,再递增
2.2、関数転送
<?php $var1 = 5; $var2 = 10; function foo(&$my_var) { global $var1; $var1 += 2; $var2 = 4; $my_var += 3; return $var2; } $my_var = 5; echo foo($my_var). "\n";//4 echo $my_var. "\n";//8 echo $var1;//7 echo $var2;//10 $bar = 'foo'; $my_var = 10; echo $bar($my_var). "\n";//4
2.3, 関数参照 return
从函数返回一个引用,必须在函数声明和指派返回值给一个变量都是用引用运算符& <?php function &myFunc() { static $b = 10; return $b; } echo myFunc();//10 $a = &myFunc();//此步a直接引用到b的地址 $a = 100;//修改a的值,相当于修改b的值 echo myFunc();//100 ,因为b是一个静态变量,该值会保留
3. 外部ファイルのインポート
パス名が指定されている場合はパスに従って検索、そうでない場合は include_path から検索
include_path がない場合は、include_path が存在するディレクトリから検索呼び出しスクリプト ファイルが配置され、現在の作業ディレクトリ
ファイルがインクルードされると、それに含まれるコードはインクルードが配置されている行の変数スコープを継承します。上記のいずれも見つからない場合は、次のエラーまたは警告が表示されます。 require と require_once: 失敗すると、致命的レベルのエラーが生成され、プログラムが停止します。
include および include_once: 失敗した場合に警告レベルのエラーのみが生成され、プログラムは実行を継続します。
2 つの唯一の違いは、インクルードされたファイル コードが既に存在する場合、そのコードはインクルードされなくなることです
4. システム組み込み関数
4.1、時刻および日付関数
date() //タイムスタンプのフォーマット
strtotime( ) //英語のテキストを変換します 日付と時刻を Unix に解析します timestamp
mktime() //整数 Unix timestamp
time() //現在の時刻タイムスタンプを取得します
microtime() //ミリ秒を取得します
date_default_timezone_set() //デフォルトのタイムゾーン
4.2、ip 処理関数
long2ip: 長整数を文字列形式のドット付きインターネット標準形式アドレス (IPV4) に変換します
ip2long: IPV4 文字列インターネットプロトコルを長整数数値に変換します
4.3、印刷関数
echo()
カンマ区切りで複数の値を一度に出力できます。 echo は言語構造体であり、実際の関数ではないため、式の一部として使用することはできません。
print(): 単純型変数の値 (int、string など)
関数 print() は値 (パラメータ) を出力し、文字列が正常に表示された場合は true を返し、それ以外の場合は false を返します。
print_r(): 複合型変数 (配列、オブジェクトなど) の値を出力できます
配列はキーと値の囲まれたリストの形式で表示されますが、文字列と数値を単純に出力できます、 Array から始まります。ただし、ブール値と NULL を出力する print_r() の結果は、すべて "n" を出力するため、意味がありません。したがって、var_dump() 関数を使用する方がデバッグに適しています。
変数に関する人間が判読できる情報を出力します。文字列、整数、または浮動小数点が指定された場合、変数の値自体が出力されます。配列が指定された場合、キーと要素は特定の形式で表示されます。オブジェクトは配列に似ています。 print_r() は配列ポインタを最後に移動することに注意してください。ポインタを先頭に戻すには、reset() を使用します。
var_dump()
この関数は、式のタイプや値など、1 つ以上の式に関する構造情報を表示します。配列は値を再帰的に展開し、インデントによって構造を示します。
変数の型と長さを決定し、変数の値を出力します。変数に値がある場合は、変数の値が出力され、データ型が返されます。この関数は、式のタイプや値など、1 つ以上の式に関する構造情報を表示します。配列は値を再帰的に展開し、インデントによって構造を示します。
var_export(): 変数の文字列表現をエクスポートまたは返します
この関数は、関数に渡された変数に関する構造情報を返します
関数の 2 番目のパラメーターを TRUE に設定することで、変数の表現を返すことができます。有効な PHP コードを返します。
var_dump和print_r的区别: var_dump返回表达式的类型与值而print_r仅返回结果,相比调试代码使用var_dump更便于阅读。 var_dump和var_export的区别: var_export() 函数返回关于传递给该函数的变量的结构信息,是合法的 PHP 代码,可以通过将函数的第二个参数设置为 TRUE,从而返回变量的表示 var_dump() 打印变量的相关信息 printf():根据格式进行输出 sprintf():根据格式转换字符串,并返回
<?php $a = array('a' => 'Apple' ,'b' => 'banana' , 'c' => 'Coconut'); //序列化数组 $s = serialize($a); echo $s; //输出结果:a:3:{s:1:"a";s:5:"Apple";s:1:"b";s:6:"banana";s:1:"c";s:7:"Coconut";} echo '<br /><br />'; //反序列化 $o = unserialize($s); print_r($o); //输出结果 Array ( [a] => Apple [b] => banana [c] => Coconut )
<?php $a = array('a' => 'Apple' ,'b' => 'banana' , 'c' => 'Coconut'); //序列化数组 $s = json_encode($a); echo $s; //输出结果:{"a":"Apple","b":"banana","c":"Coconut"} echo '<br /><br />'; //反序列化 $o = json_decode($s); 在上面的例子中,json_encode输出长度比上个例子中serialize输出长度显然要短
4.7、配列関数
php 配列操作
関連する推奨事項:
ログを記録するためのphpカスタム関数
以上がPHPのカスタム関数と内部関数の解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。