PHP 開発を行ったプログラマーは、PHP に多くの組み込み関数があることを知っておく必要があります。これらをマスターすると、PHP 開発がより快適になります。そのすべてが非常に便利です。実践的には、すべての PHP 開発者がそれをマスターできることを願っています。
1. 任意の数の関数パラメータを渡します
.NET または JAVA プログラミングでは、関数パラメータの数は通常固定されていますが、PHP では任意の数のパラメータを使用できます。次の例は、PHP 関数のデフォルトのパラメーターを示しています。
PHPコード
-
// 2 つのデフォルトパラメータを持つ関数
-
function foo($arg1 = ”, $arg2 = ”) {
-
エコー「arg1: $arg1n」;
「arg2: $arg2n」をエコーします。
-
}
-
foo('こんにちは','世界');
/* 出力: -
引数1: こんにちは-
引数2: 世界 -
*/-
ふー();
-
/* 出力:
-
引数1:
-
引数2:
-
*/
-
次の例は、PHP での変数パラメーターの使用法であり、[url=http://us2.php.net/manual/en/function.func-get-args.php]func_get_args()[/url] メソッドを使用します。 :
-
// はい、パラメーター リストは空です
-
関数 foo() {
-
// すべての受信パラメータの配列を取得します
-
$args = func_get_args();
foreach ($args as $k => $v) { -
echo "arg".($k+1).": $vn";
-
}
-
}
-
ふー();
/* 何も出力されません */ -
ふー(「こんにちは」);
-
/* 出力
-
引数1: こんにちは
-
*/
-
foo('こんにちは'、'世界'、'また');
/* 出力 -
引数1: こんにちは-
引数2: 世界 -
arg3: もう一度 -
*/-
2. glob() を使用してファイルを検索します
ほとんどの PHP 関数の関数名は文字通りその目的を理解できますが、実際には glob() を見ると、それが何に使われるのかわからないかもしれません。ファイルを検索するには、以下の使用法を参照してください。
PHPコード
-
// サフィックス PHP を持つすべてのファイルを取得します -
$files = glob('*.php');
-
print_r($files);
/* 出力: -
配列
(-
[0] =>phptest.php -
[1] => pi.php -
[2] => post_output.php -
[3] => テスト.php -
)-
*/-
さまざまな接尾辞を検索することもできます。
PHPコード
-
// PHP ファイルと TXT ファイルを取得します -
$files = glob('*.{php,txt}'、GLOB_BRACE);
print_r($files);
-
/* 出力:
-
配列
-
(
-
[0] =>phptest.php
-
[1] => pi.php
-
[2] => post_output.php
-
[3] => テスト.php
-
[4] =>ログ.txt
-
[5] =>テスト.txt
-
)
-
*/
-
パスを追加することもできます。
PHPコード
$files = glob(‘../images/a*.jpg’);
print_r($files);
-
/* 出力:
-
配列
-
(
-
[0] => ../images/apple.jpg
-
[1] => ../images/art.jpg
-
)
-
*/
-
絶対パスを取得したい場合は、realpath() 関数を呼び出すことができます。
PHPコード
-
$files = glob(‘../images/a*.jpg’);
// 関数を各配列要素に適用します
$files = array_map('realpath',$files);
-
print_r($files);
/* 出力は次のようになります: -
配列 -
(-
[0] => C:wampwwwimagesapple.jpg -
[1] => C:wampwwwimagesart.jpg -
)-
*/-
3. メモリ使用量情報の取得
PHP のメモリ リサイクル メカニズムはすでに非常に強力です。PHP スクリプトを使用して現在のメモリ使用量を取得したり、memory_get_usage() 関数を呼び出して現在のメモリ使用量を取得したり、memory_get_peak_usage() 関数を呼び出してピークのメモリ使用量を取得したりすることもできます。参照コードは次のとおりです。
PHPコード
-
echo “初期値: “.memory_get_usage().” バイト n”;
-
/* 出力
-
初期: 361400 バイト
*/
-
//メモリを使用します
-
for ($i = 0; $i
-
$array []= md5($i);
}-
// メモリの半分を削除 -
for ($i = 0; $i
unset($array[$i]);
-
}
-
echo "最終: ".memory_get_usage()."
-
/* 印刷します
-
最終: 885912 バイト
-
*/
-
echo “ピーク: “.memory_get_peak_usage().”
-
/* 出力ピーク値
-
ピーク: 13687072 バイト
-
*/
-
4. CPU使用率情報を取得する
メモリ使用量を取得した後、PHP の getrusage() を使用して CPU 使用量を取得することもできます。この方法は Windows では使用できません。
PHPコード
-
print_r(getrusage());
/* 出力 -
配列 -
(-
[ru_oublock] => 0 -
[ru_inblock] => 0 -
[ru_msgsnd] => 2 -
[ru_msgrcv] => 3 -
[ru_maxrss] => 12692 -
[ru_ixrss] => 764 -
[ru_idrss] => 3864 -
[ru_minflt] =>94 -
[ru_majflt] => 0 -
[ru_nsignals] => 1 -
[ru_nvcsw] => 67 -
[ru_nivcsw] => 4 -
[ru_nswap] => 0 -
[ru_utime.tv_usec] => 0 -
[ru_utime.tv_sec] => 0 -
[ru_stime.tv_usec] => 6269 -
[ru_stime.tv_sec] => 0 -
)-
*/-
CPU について詳しくない限り、この構造は非常にわかりにくいように思えます。以下にいくつかの説明を示します。
ru_oublock: ブロック出力操作-
ru_inblock: ブロック入力操作-
ru_msgsnd: メッセージが送信されました-
ru_msgrcv: メッセージを受信しました-
ru_maxrss: 常駐セットの最大サイズ-
ru_ixrss: 合計共有メモリサイズ-
ru_idrss: すべての非共有メモリサイズ-
ru_minflt: ページのリサイクル-
ru_majflt: ページが無効です-
ru_nsignals: 受信シグナル-
ru_nvcsw: アクティブなコンテキスト切り替え-
ru_nivcsw: パッシブコンテキストスイッチ-
ru_nswap: スワップ領域-
ru_utime.tv_usec: ユーザーモード時間 (マイクロ秒)-
ru_utime.tv_sec: ユーザーモード時間(秒)-
ru_stime.tv_usec: システムカーネル時間 (マイクロ秒)-
ru_stime.tv_sec: システムカーネル時間 (秒)-
スクリプトが消費する CPU の量を確認するには、「ユーザー モード時間」と「システム カーネル時間」の値を確認する必要があります。秒とマイクロ秒の部分は個別に提供されます。マイクロ秒の値を 100 万で割って秒の値に加算すると、小数部付きの秒数を取得できます。
PHPコード
// 3 秒間スリープします (非ビジー状態) -
睡眠(3);
-
$data = getrusage();
「ユーザー時間: - 」をエコーします。
($data['ru_utime.tv_sec'] + -
$data['ru_utime.tv_usec'] / 1000000);
-
「システム時間:
」をエコーします。
-
($data['ru_stime.tv_sec'] +
-
$data['ru_stime.tv_usec'] / 1000000);
/* 出力 -
ユーザー時間: 0.011552 -
システム時間: 0 -
*/-
スリープはシステム時間を占有しません。次の例を見てみましょう。
PHPコード
-
// 1,000 万回ループします (ビジー) -
for($i=0;$i
}-
$data = getrusage();
-
「ユーザー時間:
」をエコーします。
-
($data['ru_utime.tv_sec'] +
-
$data['ru_utime.tv_usec'] / 1000000);
「システム時間: - 」をエコーします。
($data['ru_stime.tv_sec'] + -
$data['ru_stime.tv_usec'] / 1000000);
-
/* 出力
-
ユーザー時間: 1.424592
-
システム時間: 0.004204
-
*/
-
これには約 14 秒の CPU 時間がかかりましたが、システム コールがなかったため、ほとんどすべてがユーザー時間でした。
システム時間は、CPU がシステム コールでカーネル命令の実行に費やす時間です。以下に例を示します。
PHPコード
-
$start = マイクロタイム(true)
;
-
// 約 3 秒間 microtime を呼び出し続けます
-
while(microtime(true) – $start
-
}
-
$data = getrusage();
「ユーザー時間: - 」をエコーします。
($data['ru_utime.tv_sec'] + -
$data['ru_utime.tv_usec'] / 1000000);
-
「システム時間:
」をエコーします。
-
($data['ru_stime.tv_sec'] +
-
$data['ru_stime.tv_usec'] / 1000000);
/* 印刷します -
ユーザー時間: 1.088171 -
システム時間: 1.675315 -
*/-
上記の例では、より多くの CPU が消費されていることがわかります。
5. システム定数を取得する
PHP は、現在の行番号 (__LINE__)、ファイル (__FILE__)、ディレクトリ (__DIR__)、関数名 (__FUNCTION__)、クラス名 (__CLASS__)、メソッド名 (__METHOD__)、および名前空間 (__NAMESPACE__) を取得できる非常に便利なシステム定数を提供します。 )、C 言語とよく似ています。
これらは主にデバッグに使用されると考えられますが、必ずしもそうではありません。たとえば、他のファイルをインクルードする場合は、?__FILE__ を使用できます (もちろん、PHP 5.3 以降では __DIR__ を使用することもできます)。
PHPコード
-
// これはロードされたスクリプトのパスに対する相対パスです
// 異なるディレクトリからスクリプトを実行すると問題が発生する可能性があります -
require_once('config/database.php');
-
// これは常にこのファイルのパスに対する相対パスです
-
// どこからインクルードされたかは関係ありません
-
require_once(dirname(__FILE__) . ‘/config/database.php’);
以下では、__LINE__ を使用して、プログラムのデバッグに役立つデバッグ情報を出力しています。
PHPコード
-
//コード -
// …
my_debug(「何らかのデバッグメッセージ」, __LINE__);
-
/* 出力
-
4行目: デバッグメッセージ
-
*/
-
// さらにコード
-
// …
-
my_debug(「別のデバッグ メッセージ」, __LINE__);
/* 出力 -
11行目: 別のデバッグメッセージ -
*/-
関数 my_debug($msg, $line) { -
echo "$line: $msgn";
-
}
-
6.一意のIDを生成する
多くの友人が md5() を使用して一意の番号を生成していますが、md5() には次のような欠点があります。 1. 障害が発生し、データベース内のソート パフォーマンスの低下につながります。 2. 長すぎるため、より多くの保管スペースが必要になります。実際、PHP には一意の ID を生成する関数が付属しています。この関数は uniqid() です。使用方法は次のとおりです。
PHPコード
-
// 一意の文字列を生成します
-
エコーuniqid();
/* 出力 -
4bd67c947233e -
*/-
// 別の一意の文字列を生成します -
エコーuniqid();
-
/* 出力
-
4bd67c9472340
-
*/
-
このアルゴリズムは CPU タイムスタンプに基づいて生成されるため、同様の期間では ID の最初の数桁が同じになります。これにより、重複をより適切に回避したい場合は、ID の前にプレフィックスを追加できます。 。 、のように:
PHPコード
// プレフィックス
-
エコーuniqid('foo_');
/* 出力 -
foo_4bd67d6cd8b8f -
*/-
// エントロピーがさらに増加します -
エコーuniqid(”,true);
-
/* 出力
-
4bd67d6cd8b926.12135106
-
*/
-
// すべて
-
エコーuniqid('bar_',true);
/* 出力 -
bar_4bd67da367b650.43684647 -
*/-
7. 連載
データをデータベースまたはファイルに保存する必要がある場合は、PHP のシリアル化関数と unserialize() メソッドを使用してシリアル化と逆シリアル化を実行できます。コードは次のとおりです。
PHPコード
-
// 複雑な配列 -
$myvar = array(
「こんにちは」-
42、-
配列(1,'two')、-
「リンゴ」-
);
-
// 連載
-
$string = シリアル化($myvar);
$string をエコーします。
-
/* 出力
-
a:4:{i:0;s:5:「こんにちは」;i:1;i:42;i:2;a:2:{i:0;i:1;i:1;s:3: "2";}i:3;s:5:"リンゴ";}
-
*/
-
//非順次インスタンス化
-
$newvar = unserialize($string);
print_r($newvar);
-
/* 出力
-
配列
-
(
-
[0] => こんにちは
-
[1] => 42
-
[2] => 配列
-
(
-
[0] => 1
-
[1] => 2
-
)
-
[3] => リンゴ
-
)
-
*/
-
json 形式にシリアル化する方法は、PHP 5.2 以降を使用しているユーザーがすでに実行しているため、json_encode() 関数と json_decode() 関数を使用して json 形式にシリアル化することができます。
PHPコード
// 複雑な配列
-
$myvar = array(
-
「こんにちは」
-
42、
-
配列(1,'two')、
-
「リンゴ」
-
);
// 文字列に変換します -
$string = json_encode($myvar);
-
$string をエコーします。
/* 印刷します -
["こんにちは",42,[1,"二"],"リンゴ"] -
*/-
// 元の変数を再現できます -
$newvar = json_decode($string);
-
print_r($newvar)
-
/* 印刷します
-
配列
-
(
-
[0] => こんにちは
-
[1] => 42
-
[2] => 配列
-
(
-
[0] => 1
-
[1] => 2
-
)
-
[3] => リンゴ
-
)
-
*/
-
8. 文字列の圧縮
圧縮というとファイル圧縮を思い浮かべるかもしれませんが、実際には文字列も圧縮できます。PHP は gzcompress() および gzuncompress() 関数を提供します。
PHPコード
-
$string =
-
「真実は、痛み自体は良いものであり、それは成功するということです。」
顧客サービス。 では、それを見てみましょう
-
コーチング 簡単な方法はありません。 枕です
-
ホールの知恵や便、病院の値段は出しません
-
彼は再び湖をかさ上げしませんでした。 痛くてごめんなさい
それが良いなら、それは顧客を引き付けることができるでしょう。 いくつか-
ターゲットとなる身体の価格。 はい、そしてマス-
しかしそれは嘆くには醜い時期だった。 私は話していますが、私はサッカー選手ではありません
-
ソフトな宿題 それはまさにその日、人生の結果です
今から何かを飾るために あの大きくて押しの強い中で-
地面を整える でも、それは私の恐怖ではなく、靴紐です-
宣伝する でも大きい場合は、ふんわり柔らかく飾ってください-
でも今。 宿題をするのにちょうどいいタイミングでも。 -
チョコレートやチョコレートを恐れる必要はありません
-
サッカーではありません。 不味い湖から水を飲むために
そのeuismodの壺のメンバー 「; -
$compressed = gzcompress($string); -
「元のサイズ:」をエコーします。 strlen($string)."n"; -
/* 元のサイズを出力します -
元のサイズ: 800 -
*/-
「圧縮サイズ:」をエコーします。 strlen($compressed).”n”; -
)
-
圧縮サイズ: 418
-
*/
-
// 解ストーリー情
-
$original = gzuncompress($compressed);
-
同時に、 gzencode() および gzdecode() 関数を使用して圧縮することもできますが、異なる圧縮アルゴリズムのみを使用します。
以上、8个のPHP関数開発でしたが、なかなか実践的ではないでしょうか?
-
翻訳出典:8つの安全に必須のPHP関数
-
- http://www.bkjia.com/PHPjc/735057.html
www.bkjia.com
本当
http://www.bkjia.com/PHPjc/735057.html
技術記事 PHP 開発のプログラマ名電影、PHP には多くの組み込み関数があり、それらをマスターすると、PHP 開発時にさらに役立ちます。