関数は PHP のその力の源ですが、多くの PHP 関数は十分に活用されていません。ここでは、あまり知られていないが非常に便利な 10 個の機能を簡単に紹介します。
1. sys_getloadavg()
sys_getloadavt()はシステムの負荷ステータスを取得できます。この関数は 3 つの要素を含む配列を返します。各要素は過去 1、5、15 分間のシステムの平均負荷を表します。過剰な負荷によってサーバーをクラッシュさせるよりも、システム負荷が非常に高いときにスクリプトを積極的に停止する方が、この機能を実現しやすくするために使用されます。 残念ながら、この機能は Windows では無効です。
2. Pack()
Pack() は、md5() によって返された 32 ビットの 16 進文字列を 16 ビットのバイナリ文字列に変換し、ストレージ領域を節約できます。
3. cal_days_in_month()
cal_days_in_month() は、指定された月の日数を返すことができます。
4. _()
WordPress 開発者は、_e() と同様にこの関数をよく目にします。これら 2 つの関数は同じ機能を持ち、gettext() 関数と組み合わせて使用することで Web サイトの多言語化を実現できます。詳細については、PHP マニュアルの該当部分を参照してください。
5. get_browser()
ページを送信する前に、ユーザーのブラウザで何ができるかを確認するのは良いことではないでしょうか? get_browser() は、ユーザーのブラウザの種類とブラウザでサポートされている機能を取得できます。 php_browscap.ini ファイル。関数の参照ファイルとして使用されます。
この関数によるブラウザの機能の判断は、このタイプのブラウザの一般的な特性に基づいていることに注意してください。たとえば、ユーザーがブラウザーで JavaScript サポートをオフにしている場合、関数はこれを知る方法がありません。ただし、この関数はブラウザの種類と OS プラットフォームを非常に正確に判断します。
6. debug_print_backtrace()
これは、コード内の論理エラーを見つけるのに役立つデバッグ関数です。この関数を理解するために、例を見てみましょう:
<ol class="dp-c"> <li class="alt"><span><span class="vars">$a</span><span> = 0; </span></span></li> <li> <span class="keyword">function</span><span> iterate() { </span> </li> <li class="alt"> <span class="keyword">global</span><span> </span><span class="vars">$a</span><span>; </span> </li> <li> <span class="keyword">if</span><span>( </span><span class="vars">$a</span><span> < 10 ) </span></li><li class="alt"><span>recur(); </span></li><li><span class="func">echo</span><span> </span><span class="vars">$a</span><span> . “, “; </span></li><li class="alt"><span>} </span></li><li><span class="keyword">function</span><span> recur() { </span></li><li class="alt"><span class="keyword">global</span><span> </span><span class="vars">$a</span><span>; </span></li><li><span class="vars">$a</span><span>++; </span></li><li class="alt"><span class="comment">// how did I get here? </span><span> </span></li><li><span class="func">echo</span><span> “nnn”; </span></li><li class="alt"><span>debug_print_backtrace(); </span></li><li><span class="keyword">if</span><span>( </span><span class="vars">$a</span><span> < 10 ) </span></li><li class="alt"><span>iterate(); </span></li><li><span>} </span></li><li class="alt"><span>iterate(); </span></li><li><span># OUTPUT: </span></li><li class="alt"><span>#0 recur() called at [C:htdocsphp_stuffindex.php:8] </span></li><li><span>#1 iterate() called at [C:htdocsphp_stuffindex.php:25] </span></li><li class="alt"><span>#0 recur() called at [C:htdocsphp_stuffindex.php:8] </span></li><li><span>#1 iterate() called at [C:htdocsphp_stuffindex.php:21] </span></li><li class="alt"><span>#2 recur() called at [C:htdocsphp_stuffindex.php:8] </span></li><li><span>#3 iterate() called at [C:htdocsphp_stuffindex.php:25] </span></li><li class="alt"><span>#0 recur() called at [C:htdocsphp_stuffindex.php:8] </span></li><li><span>#1 iterate() called at [C:htdocsphp_stuffindex.php:21] </span></li><li class="alt"><span>#2 recur() called at [C:htdocsphp_stuffindex.php:8] </span></li><li><span>#3 iterate() called at [C:htdocsphp_stuffindex.php:21] </span></li><li class="alt"><span>#4 recur() called at [C:htdocsphp_stuffindex.php:8] </span></li><li><span>#5 iterate() called at [C:htdocsphp_stuffindex.php:25] </span></li></ol>
7.metaphone()
この関数は、同じ発音を持つ単語のメタフォン値を返します。この関数は、2 つの単語が同じ発音であるかどうかを判断するのに役立ちます。
8. natsort()
natsort() は自然な並べ替えで配列を配置できます:
<ol class="dp-c"><li class="alt"><span><span class="vars">$items</span><span> = </span><span class="keyword">array</span><span>( </span></span></li><li><span>“100 apples”, “5 apples”, “110 apples”, “55 apples” </span></li><li class="alt"><span>); </span></li><li><span class="comment">// normal sorting: </span><span> </span></li><li class="alt"><span>sort(</span><span class="vars">$items</span><span>); </span></li><li><span>print_r(</span><span class="vars">$items</span><span>); </span></li><li class="alt"><span># Outputs: </span></li><li><span># Array </span></li><li class="alt"><span># ( </span></li><li><span># [0] => 100 apples </span> </li> <li class="alt"><span># [1] => 110 apples </span></li> <li><span># [2] => 5 apples </span></li> <li class="alt"><span># [3] => 55 apples </span></li> <li><span># ) </span></li> <li class="alt"> <span>natsort(</span><span class="vars">$items</span><span>); </span> </li> <li> <span>print_r(</span><span class="vars">$items</span><span>); </span> </li> <li class="alt"><span># Outputs: </span></li> <li><span># Array </span></li> <li class="alt"><span># ( </span></li> <li><span># [2] => 5 apples </span></li> <li class="alt"><span># [3] => 55 apples </span></li> <li><span># [0] => 100 apples </span></li> <li class="alt"><span># [1] => 110 apples </span></li> <li><span># ) </span></li> </ol>
9. 2つの単語間の「距離」を指します。ある単語を別の単語に変更する場合に、挿入、置換、削除する必要がある文字の数がわかります。
例を見てください:<ol class="dp-c"> <li class="alt"><span><span class="vars">$dictionary</span><span> = </span><span class="keyword">array</span><span>( </span></span></li> <li><span>“php”, “javascript”, “css” </span></li> <li class="alt"><span>); </span></li> <li> <span class="vars">$word</span><span> = “japhp”; </span> </li> <li class="alt"> <span class="vars">$best_match</span><span> = </span><span class="vars">$dictionary</span><span>[0]; </span> </li> <li> <span class="vars">$match_value</span><span> = levenshtein(</span><span class="vars">$dictionary</span><span>[0], </span><span class="vars">$word</span><span>); </span> </li> <li class="alt"> <span class="keyword">foreach</span><span>(</span><span class="vars">$dictionary</span><span> </span><span class="keyword">as</span><span> </span><span class="vars">$w</span><span>) { </span> </li> <li> <span class="vars">$value</span><span> = levenshtein(</span><span class="vars">$word</span><span>, </span><span class="vars">$w</span><span>); </span> </li> <li class="alt"> <span class="keyword">if</span><span>( </span><span class="vars">$value</span><span> < </span><span class="vars">$match_value</span><span> ) { </span> </li> <li> <span class="vars">$best_match</span><span> = </span><span class="vars">$w</span><span>; </span> </li> <li class="alt"> <span class="vars">$match_value</span><span> = </span><span class="vars">$value</span><span>; </span> </li> <li><span>} </span></li> <li class="alt"><span>} </span></li> <li> <span class="func">echo</span><span> “Did you mean the ‘</span><span class="vars">$best_match</span><span>’ category?”; </span> </li> </ol>
10. glob()
glob() を使用すると、ファイルを検索するために opendir()、readdir()、および Closedir() を使用することが愚かに感じられます。
<ol class="dp-c"> <li class="alt"><span><span class="keyword">foreach</span><span> (</span><span class="func">glob</span><span>(“*.php”) </span><span class="keyword">as</span><span> </span><span class="vars">$file</span><span>) </span></span></li> <li> <span class="func">echo</span><span> “</span><span class="vars">$file</span><span>n”; </span> </li> </ol>