ホームページ  >  記事  >  バックエンド開発  >  PHPプログラマーがよく使う8つの関数まとめ、PHPプログラマーまとめ_PHPチュートリアル

PHPプログラマーがよく使う8つの関数まとめ、PHPプログラマーまとめ_PHPチュートリアル

WBOY
WBOYオリジナル
2016-07-13 10:11:26727ブラウズ

PHPプログラマーがよく使う8つの関数をまとめた、PHPプログラマー向けのまとめ

PHP 開発を行ったプログラマーは、PHP に多くの組み込み関数があることを知っておく必要があります。これらをマスターすると、PHP 開発がより快適になります。そのすべてが非常に便利です。実践的には、すべての PHP 開発者がそれをマスターできることを願っています。

1. 関数パラメータを任意の数渡します

.NETやJAVAプログラミングでは関数のパラメータの数は固定されているのが一般的ですが、PHPでは任意の数のパラメータを使用することができます。次の例は、PHP 関数のデフォルトのパラメーターを示しています。

コードをコピーします コードは次のとおりです:

// 2 つのデフォルトパラメータを持つ関数
function foo($arg1 = ”, $arg2 = ”) {
echo “arg1: $arg1n”;
echo “arg2: $arg2n”;
}
foo('hello','world');
/* 出力:
引数1: こんにちは
引数2: ワールド
*/
foo();
/* 出力:
引数1:
引数2:
*/

次の例は、?func_get_args() メソッドを使用する、PHP での変数パラメーターの使用法です。

コードをコピーします コードは次のとおりです:
// はい、パラメータリストは空です
関数 foo() {
// すべての受信パラメータの配列を取得します
$args = func_get_args();
foreach ($args as $k => $v) {
echo “arg”.($k+1).”: $vn”;
}
}
foo();
/* 何も出力されません */
foo('こんにちは');
/* 出力
引数1: こんにちは
*/
foo('hello', 'world', 'again');
/* 出力
引数1: こんにちは
引数2: ワールド
引数3: またまた
*/

2. glob()を使用してファイルを検索します

ほとんどの PHP 関数の関数名は文字通りその目的を理解できますが、?glob() を見るとそれが何に使われるのかわからないかもしれません。実際には glob() と scandir() も同じように使用できます。ファイルを検索するには、以下の使用方法を参照してください:

コードをコピーします コードは次のとおりです:
// サフィックス PHP を持つすべてのファイルを取得します
$files = glob(‘*.php’);

print_r($files);
/* 出力:
配列
(
[0] => phptest.php
[1] => pi.php
[2] => post_output.php
[3] => test.php
)
*/

さまざまなサフィックスを検索することもできます

コードをコピーします コードは次のとおりです:
// PHP ファイルと TXT ファイルを取得します
$files = glob(‘*.{php,txt}’, GLOB_BRACE);

print_r($files);
/* 出力:
配列
(
[0] => phptest.php
[1] => pi.php
[2] => post_output.php
[3] => test.php
[4] => log.txt
[5] => test.txt
)
*/

パスを追加することもできます:

コードをコピーします コードは次のとおりです:
$files = glob(‘../images/a*.jpg’);
print_r($files);
/* 出力:
配列
(
[0] => ../images/apple.jpg
[1] => ../images/art.jpg
)
*/

絶対パスを取得したい場合は、?realpath() 関数を呼び出すことができます:

コードをコピーします コードは次のとおりです:
$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() 関数を呼び出すこともできます。参照コードは次のとおりです:

コードをコピーします コードは次のとおりです:

echo “初期値: “.memory_get_usage().” バイト n”;
/* 出力
初期値: 361400バイト
*/
// メモリを使用します
for ($i = 0; $i $array []= md5($i);
}
// メモリの半分を削除
for ($i = 0; $i unset($array[$i]);
}
echo "最終: ".memory_get_usage()." バイト n";
/* プリント
最終: 885912 バイト
*/
echo “ピーク: “.memory_get_peak_usage().”;
/* 出力ピーク値
ピーク: 13687072 バイト
*/

4. CPU使用率情報を取得します

メモリ使用量を取得した後、PHP の getrusage() を使用して CPU 使用量を取得することもできます。この方法は Windows では使用できません。

コードをコピーします コードは次のとおりです:

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] => [ru_stime.tv_usec] => 6269
[ru_stime.tv_sec] => )
*/


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 万で割って秒の値に加算すると、小数部付きの秒数を取得できます。

コードをコピーします コードは次のとおりです:
// 3 秒間スリープします (非ビジー)
睡眠(3);
$data = getrusage();
echo "ユーザー時間: ".
($data['ru_utime.tv_sec'] +
$data['ru_utime.tv_usec'] / 1000000);
echo "システム時間: ".
($data['ru_stime.tv_sec'] +
$data['ru_stime.tv_usec'] / 1000000);
/* 出力
ユーザー時間: 0.011552
システム時間: 0
*/


スリープはシステム時間を占有しません。次の例を見てみましょう。

コードをコピーします

コードは次のとおりです: // 1,000万回ループします(ビジー)
for($i=0;$i }
$data = getrusage();
echo "ユーザー時間: ".
($data['ru_utime.tv_sec'] +
$data['ru_utime.tv_usec'] / 1000000);
echo "システム時間: ".
($data['ru_stime.tv_sec'] +
$data['ru_stime.tv_usec'] / 1000000);
/* 出力
ユーザー時間: 1.424592
システム時間: 0.004204
*/



これには約 14 秒の CPU 時間がかかりましたが、システムコールがなかったのでほとんどすべてがユーザー時間でした。
システム時間は、CPU がシステムコールでカーネル命令の実行に費やす時間です。以下に例を示します:

コードをコピーします

コードは次のとおりです: $start = microtime(true);
// マイクロタイムを約 3 秒間呼び出し続けます
while(microtime(true) – $start }
$data = getrusage();
echo "ユーザー時間: ".
($data['ru_utime.tv_sec'] +
$data['ru_utime.tv_usec'] / 1000000);
echo "システム時間: ".
($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__ も使用できます)。例。

コードをコピーします コードは次のとおりです:

// これはロードされたスクリプトのパスに対する相対パスです
// 異なるディレクトリからスクリプトを実行すると問題が発生する可能性があります
require_once('config/database.php');
// これは常にこのファイルのパスに対する相対パスです
// どこからインクルードされたかは関係ありません
require_once(dirname(__FILE__) . ‘/config/database.php’);

以下は __LINE__ を使用して、プログラムのデバッグに役立つデバッグ情報を出力しています:

コードをコピーします コードは次のとおりです:

// コード
// …
my_debug(“何らかのデバッグメッセージ”, __LINE__);
/* 出力
4行目: デバッグメッセージ
*/
// さらにコードをいくつか
// …
my_debug(“別のデバッグ メッセージ”, __LINE__);
/* 出力
11行目: 別のデバッグメッセージ
*/
関数 my_debug($msg, $line) {
echo “$line 行: $msgn”;
}

6. 固有のIDを生成します

多くの友人が md5() を使用して一意の番号を生成していますが、md5() にはいくつかの欠点があります。 1. 障害が発生し、データベース内の並べ替えパフォーマンスの低下につながります。 2. 長すぎるため、より多くの保管スペースが必要になります。実際、PHP には一意の ID を生成する関数が付属しています。この関数は uniqid() です。使用方法は次のとおりです:

コードをコピーします コードは次のとおりです:

//一意の文字列を生成します
エコーuniqid();
/* 出力
4bd67c947233e
*/
// 別の一意の文字列を生成します
エコーuniqid();
/* 出力
4bd67c9472340
*/

このアルゴリズムは CPU タイムスタンプに基づいて生成されるため、同様の期間では ID の最初の数桁が同じになり、ID の並べ替えも容易になります。重複をより適切に回避したい場合は、ID の前に追加することができます。プレフィックス:

など

コードをコピーします コードは次のとおりです:

// プレフィックス
echo uniqid('foo_');
/* 出力
foo_4bd67d6cd8b8f
*/
// エントロピーがさらに増加し​​ます
echo uniqid(”,true);
/* 出力
4bd67d6cd8b926.12135106
*/
// すべて
echo uniqid('bar_',true);
/* 出力
bar_4bd67da367b650.43684647
*/

7.連載

PHP のシリアル化関数は、データをデータベースまたはファイルに保存する必要がある場合に、シリアル化と逆シリアル化を実現するために PHP で使用することができます。コードは次のとおりです。以下:

コードをコピーします コードは次のとおりです:

// 複雑な配列
$myvar = 配列(
「こんにちは」
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 形式にシリアル化する方法は次のとおりです。

コードをコピーします コードは次のとおりです:

// 複雑な配列
$myvar = 配列(
「こんにちは」
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() 関数を提供します:

コードをコピーします コードは次のとおりです:

$string =
「Lorem ipsum dolor sit amet, consectetur
」 アディピシングエリート、Nunc ut elit id mi ultrices
ヌラ・ファシリシ、
サピエン・ヴェル・フェジアト前庭、ヌラ・デュイ・プレティウム・オルチ、
非究極的エリート、ロレム・イプサム・ドール
。 座って、エリートを集めてください。 プレティウム・ウラムコーパー・ウルナ・キス・イアキュリス
sed turpis Tempor luctus Curabitur sed nibh eu elit
モリス・コング、Praesent ipsum diam、consectetur vitae
オルナレ、アリカム、ヌンクで。 Tellus posuere adipiscing、Sed non mi metus、ラキニア
オーグー、セド・マグナ・ニシ、オルナーレ・イン・モリス・イン、モリス
レオ・コング・モリスのジュストでセド・ヌンク。 ヌラム・イン・ネケ・エゲット・メトゥス・ヘンドレリット・スセレリスク
ユー・ノン・エニム
ID euismod ウルナ ソダレス「;
」 $compressed = gzcompress($string);
echo "元のサイズ: ".strlen($string)."n";
/* 元のサイズを出力します
元のサイズ: 800
*/
echo "圧縮サイズ: ".strlen($compressed)."n";
/* 圧縮サイズを出力します
圧縮サイズ: 418
*/
// 解凍します
$original = gzuncompress($compressed);



圧縮率は50%近く。同時に、?gzencode() 関数と gzdecode() 関数を使用して圧縮することもできますが、使用する圧縮アルゴリズムは異なります。
上記は PHP プログラマーが習得しなければならない 8 つの関数です。どれも実用的ですか?

http://www.bkjia.com/PHPjc/929671.html

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/929671.html技術記事 PHP プログラマーがよく使う 8 つの関数のまとめ PHP 開発を行ったプログラマーは、PHP に多くの組み込み関数があることを知っているはずです...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。