ホームページ php教程 php手册 PHP開発でよく使われる9つの関数のまとめ

PHP開発でよく使われる9つの関数のまとめ

Jun 13, 2016 pm 12:07 PM
php 関数 関数 パラメータ 意味 よく使われる 開発する 目的 知る

1. 関数の任意の数のパラメーター
PHP では、デフォルトのパラメーターを使用して関数を定義できることはご存知かもしれません。しかし、PHP では完全に任意のパラメーターを使用して関数を定義することもできることはご存知ないかもしれません
以下に、デフォルト パラメーターを使用した関数を示す例を示します:

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


// 2 つのデフォルトパラメータを持つ関数
function foo($arg1 = '', $arg2 = '') {
echo " arg1: $arg1n";
echo "arg2: $arg2n";
}
foo('hello','world');
/* 出力:
arg1: hello
arg2 : world
*/
foo();
/* 出力:
arg1:
arg2:
*/
次に、次の関数を見てみましょう。 ?func_get_args() メソッドを使用する変数パラメータ:
// はい、仮パラメータ リストは空です
function foo() {
// すべての受信パラメータの配列を取得します
$args = func_get_args();
foreach ($args as $k => $v) {
echo "arg".($k 1).": $vn";
foo();
/* 何も出力されません */
foo('hello');
/* 出力
arg1: hello
*/
foo( 'hello', 'world', 'again');
/* 出力
arg1: hello
arg2: world
arg3: again
*/


2. Glob() を使用してファイルを検索します
多くの PHP 関数には比較的長い関数名が付いていますが、?glob() を見ると、何が何だかわからないかもしれません。この関数は、すでによく知っている場合を除いて、次の目的で使用されます。
この関数は、ファイルの検索に使用できる scandir() と考えることができます。


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

// サフィックス PHP を持つすべてのファイルを取得します

$files = glob( '*.php');
print_r($files);
/* 出力:
配列
(
[0] => phptest.php
[1] ] = > pi.php
[2] => post_output.php
[3] => test.php
)
*/
なども検索できますof suffixes
// 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)
/* 出力:
Array
(
[0] => ../images/apple.jpg
[1] => ../images/art.jpg
)
*/
絶対パスを取得したい場合は、 ?realpath() 関数を呼び出すことができます:
$files = glob('../images/a*.jpg');
// 関数を各配列要素に適用します
$files = array_map(' realpath',$files) ;
print_r($files);
/* 出力は次のようになります:
Array
(
[0] => C:wampwwwimagesapple.jpg
[1] => C:wampwwwimagesart.jpg
)
*/



3. プログラムのメモリ使用量の観察コードをより適切に最適化できます。
PHP には、ガベージ コレクション メカニズムと非常に複雑なメモリ管理メカニズムがあります。スクリプトが使用しているメモリの量を確認できます。現在のメモリ使用量を知るには、memory_get_usage() 関数を使用します。ピーク時のメモリ使用量を知りたい場合は、memory_get_peak_usage() 関数を呼び出します。


コードをコピー

コードは次のとおりです。

echo "Initial: ".memory_get_usage()." bytes n"; /* 出力 初期: 361400 バイト */

// メモリ

を使用 ($i = 0; $i $array []= md5($i);
}
// メモリの半分を削除
for ($i = 0; $i unset($array) [$i] );
}
echo "Final: ".memory_get_usage()." bytes n" .memory_get_peak_usage()." bytes n"; :13687072バイト
*/


4. CPU 使用率情報
?getrusage() 関数を使用すると、CPU 使用率を知ることができます。この機能は Windows では使用できないことに注意してください。

コードをコピー コードは次のとおりです。


print_r(getrusage());/* Output 配列
(
[ru_oublock] => 0
[ru_inblock] => 0
[ru_msgsnd] => 2
[ru_msgrcv] => 3
[ ru_maxrss] = > 12692
[ru_idrss] => 3864
[ru_majflt] => 1
[ru_nvcsw] => 67
[ru_nivcsw] => 4
[ru_nswap] => 0
[ru_utime.tv_usec] => .tv_sec] => 0
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 万で割って秒の値に加算すると、小数部付きの秒数を取得できます。
// 3 秒間スリープします (非ビジー)
sleep(3);
$data = getrusage();
echo "ユーザー時間: ". ru_utime.tv_sec']
$data['ru_utime.tv_usec'] / 1000000);
echo "システム時間: ".
($data['ru_stime.tv_sec']
$data[ 'ru_stime.tv_usec'] / 1000000);
/* Output
ユーザー時間: 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); > // microtime を約 3 秒間呼び出し続けます
while(microtime(true) - $start < 3) {
}

$data = getrusage() echo "ユーザー時間: " . ($data['ru_utime.tv_sec'] $data['ru_utime.tv_usec'] / 1000000); echo "システム時間: ". tv_sec']

$data['ru_stime.tv_usec'] / 1000000);

/* prints
ユーザー時間: 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("some debug message", __LINE__);
/* 出力
4 行目: いくつかのデバッグ メッセージ
*/
// いくつかのコード
// ...
my_debug("another debug message", __LINE__);
/* 出力
11 行目: 別のデバッグ メッセージ
*/
function my_debug($msg, $line) {
echo "Line $line: $msgn";
}
6. 一意のメッセージを生成します。 ID
多くの人は、以下に示すように、md5() を使用して一意の ID を生成します。
// 一意の文字列を生成します
echo md5(time() . mt_rand(1, 1000000)); 🎜> 実際、PHP にはこれを行うために特別に使用される ?uniqid() という関数があります:
// 一意の文字列を生成します
echo uniqid();
/* 出力
4bd67c947233e
*/
// 別のユニークな文字列を生成
echo uniqid();
/* 出力
4bd67c9472340
出てくるIDの最初の数桁は同じです。ジェネレーターはシステム時間に依存するため、ID を簡単にソートできるため、これは実際には非常に優れた機能です。 MD5 ではこれができません。
名前の重複を避けるためにプレフィックスを追加することもできます。
// プレフィックス
echo uniqid('foo_');
/* 出力
foo_4bd67d6cd8b8f
*/
// エントロピーがさらにあります
echo uniqid('',true);
/* 出力
4bd67d6cd8b926.12135106
*/
// 両方とも
echo uniqid('bar_ ' , true);
/* Output
bar_4bd67da367b650.43684647
*/


さらに、生成される ID は MD5 によって生成される ID よりも短くなり、たくさんのスペース。

ユーザー名: パスワード: bkJia Sanbu 条約提出 Web サイト | PHP オープンソース関連のダウンロード | bkJia 中国語フォーラム| Apache | PHP | Ajax |
時間: 2011-07-08 00:18 ソース: Coolshell.cn クリック数: 5,403 回関数の任意の数のパラメータ PHP ではデフォルトのパラメータ関数を定義できることはご存知かもしれません。ただし、PHP では完全に任意のパラメーターを使用して関数を定義できることはご存知ないかもしれません。以下に、デフォルト パラメーターを使用した関数の例を示します。 // 2 つのデフォルト パラメーターを持つ関数 function foo($arg1 = '', $arg2 = '') { echo arg1: $ar

7. シリアル化

より複雑なデータ構造をデータベースまたはファイルに保存しますか? 自分で作成する必要はありません。アルゴリズム。 PHP はすでにそれを行っており、?serialize() と unserialize() という 2 つの関数を提供します。

コードをコピー

コードは次のとおりです:


// 複雑な配列
$myvar = array(
'hello',
42,
array(1,'two'),
'apple'
);
//シリアル化
$string = Serialize($myvar);
echo $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 :"apple";}
*/
//逆シリアル化
$newvar = unserialize($string);
print_r($newvar); /* 出力
配列 <🎜; > (
[0] => こんにちは
[1] => 42
[2] => 配列
(
[0] => 1
[ 1] => two
)
[3] => apple
)
*/
これは PHP のネイティブ関数ですが、現在では JSON がますます増えています。人気があるため、PHP は PHP5.2 以降、json_encode() および json_decode() 関数を使用できるようになります。
// 複雑な配列
$myvar = array(
'hello' ,
42,
array(1,'two'),
'apple'
);
// 文字列に変換
$string = json_encode($myvar);
echo $string;
/* prints
["hello",42,[1,"two"],"apple"]
*/
// オリジナルを再現できます変数
$newvar = json_decode($string); 42
[2] => 配列
(
[0] => 1
[1] => two
)
[3] => ; apple
)
*/


これはよりコンパクトに見え、JavaScript や他の言語と互換性があります。ただし、非常に複雑なデータ構造によっては、データ損失が発生する可能性があります。

8. 文字列の圧縮

圧縮というと、実際には文字列も圧縮できると考えられます。 PHP は ?gzcompress() および gzuncompress() 関数を提供します:


コードをコピー

コードは次のとおりです:
$string =
「Lorem IPSUM DOLOROLOLOLR SITAT AMET、Consectetur

Adipiscip Elite. NUNC UT Elit ID Mi Ultricies Adipiscing. Nulla Facilisi. SAPIEN VEL FEUGIAT VESTIBULUM、Nulla Dui Pretium Orci、 Non Ultricies Elit lacus quis ante . Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam pretium ullamcorper urna quis iaculis 、ornare in mollis

sed etiam at justo congue mollis。圧縮 = gzcompress($string);

echo "元のサイズ: ".strlen($string)."n";
/* 元のサイズを出力します
元のサイズ: 800
*/
echo "圧縮サイズ: ".strlen($compressed)."n";
/* 圧縮サイズを出力
圧縮サイズ: 418
*/
// 解凍
$original = gzuncompress($compressed);


圧縮率はほぼ50%。同時に、?gzencode() 関数と gzdecode() 関数を使用して圧縮することもできますが、使用する圧縮アルゴリズムは異なります。

9. シャットダウン関数の登録

スクリプト全体が停止する前にコードを実行できるようにする ?register_shutdown_function() という関数があります。以下の例を見てみましょう:



コードをコピーします

コードは次のとおりです:


// 開始時刻を取得します
$start_time = microtime(true);
// いくつかの処理を行います
// ...
// スクリプトにかかった時間を表示します
echo "実行にかかった時間: ".
(microtime(true) - $start_time).
" 秒。";
上記の例は、特定の関数の実行時間を計算するためにのみ使用されます。その後、関数の途中で ?exit() 関数を呼び出した場合、最終的なコードは実行されません。また、ブラウザでスクリプトが終了した場合 (ユーザーが停止ボタンを押した場合)、スクリプトは実行できません。
register_shutdown_function() を使用すると、スクリプトが停止した後でもプログラムが実行されます。
$start_time = microtime(true);
register_shutdown_function('my_shutdown'); // doいくつかのもの
// ...
function my_shutdown() {
global $start_time;
echo "実行にかかった時間: ".
(microtime(true) - $ start_time). > 「秒。」
}


このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Dec 24, 2024 pm 04:42 PM

PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 Dec 20, 2024 am 11:31 AM

Visual Studio Code (VS Code とも呼ばれる) は、すべての主要なオペレーティング システムで利用できる無料のソース コード エディター (統合開発環境 (IDE)) です。 多くのプログラミング言語の拡張機能の大規模なコレクションを備えた VS Code は、

PHPでHTML/XMLを解析および処理するにはどうすればよいですか? PHPでHTML/XMLを解析および処理するにはどうすればよいですか? Feb 07, 2025 am 11:57 AM

このチュートリアルでは、PHPを使用してXMLドキュメントを効率的に処理する方法を示しています。 XML(拡張可能なマークアップ言語)は、人間の読みやすさとマシン解析の両方に合わせて設計された多用途のテキストベースのマークアップ言語です。一般的にデータストレージに使用されます

母音を文字列にカウントするPHPプログラム 母音を文字列にカウントするPHPプログラム Feb 07, 2025 pm 12:12 PM

文字列は、文字、数字、シンボルを含む一連の文字です。このチュートリアルでは、さまざまな方法を使用してPHPの特定の文字列内の母音の数を計算する方法を学びます。英語の母音は、a、e、i、o、u、そしてそれらは大文字または小文字である可能性があります。 母音とは何ですか? 母音は、特定の発音を表すアルファベットのある文字です。大文字と小文字など、英語には5つの母音があります。 a、e、i、o、u 例1 入力:string = "tutorialspoint" 出力:6 説明する 文字列「TutorialSpoint」の母音は、u、o、i、a、o、iです。合計で6元があります

JSON Web Tokens(JWT)とPHP APIでのユースケースを説明してください。 JSON Web Tokens(JWT)とPHP APIでのユースケースを説明してください。 Apr 05, 2025 am 12:04 AM

JWTは、JSONに基づくオープン標準であり、主にアイデンティティ認証と情報交換のために、当事者間で情報を安全に送信するために使用されます。 1。JWTは、ヘッダー、ペイロード、署名の3つの部分で構成されています。 2。JWTの実用的な原則には、JWTの生成、JWTの検証、ペイロードの解析という3つのステップが含まれます。 3. PHPでの認証にJWTを使用する場合、JWTを生成および検証でき、ユーザーの役割と許可情報を高度な使用に含めることができます。 4.一般的なエラーには、署名検証障害、トークンの有効期限、およびペイロードが大きくなります。デバッグスキルには、デバッグツールの使用とロギングが含まれます。 5.パフォーマンスの最適化とベストプラクティスには、適切な署名アルゴリズムの使用、有効期間を合理的に設定することが含まれます。

トップ10グローバルデジタル仮想通貨取引プラットフォームランキング(2025権限ランキング) トップ10グローバルデジタル仮想通貨取引プラットフォームランキング(2025権限ランキング) Mar 06, 2025 pm 04:36 PM

2025年、グローバルデジタル仮想通貨取引プラットフォームは、トランザクションのボリューム、セキュリティ、ユーザーエクスペリエンスなどの指標に基づいて、2025年に世界のトップ10のデジタル通貨取引プラットフォームを激しく競争しています。 OKXは、強力な技術的強さとグローバルな運用戦略で最初にランクされており、Binanceは高流動性と低料金に密接に続きます。 Gate.io、Coinbase、Krakenなどのプラットフォームは、それぞれの利点がある最前線にいます。このリストには、Huobi、Kucoin、Bitfinex、Crypto.com、Geminiなどの取引プラットフォームがそれぞれ独自の特徴がありますが、投資は注意する必要があります。プラットフォームを選択するには、セキュリティ、流動性、料金、ユーザーエクスペリエンス、通貨選択、規制コンプライアンスなどの要因を考慮し、合理的に投資する必要があります

今まで知らなかったことを後悔している 7 つの PHP 関数 今まで知らなかったことを後悔している 7 つの PHP 関数 Nov 13, 2024 am 09:42 AM

あなたが経験豊富な PHP 開発者であれば、すでにそこにいて、すでにそれを行っていると感じているかもしれません。あなたは、運用を達成するために、かなりの数のアプリケーションを開発し、数百万行のコードをデバッグし、大量のスクリプトを微調整してきました。

PHPでの後期静的結合を説明します(静的::)。 PHPでの後期静的結合を説明します(静的::)。 Apr 03, 2025 am 12:04 AM

静的結合(静的::) PHPで後期静的結合(LSB)を実装し、クラスを定義するのではなく、静的コンテキストで呼び出しクラスを参照できるようにします。 1)解析プロセスは実行時に実行されます。2)継承関係のコールクラスを検索します。3)パフォーマンスオーバーヘッドをもたらす可能性があります。

See all articles