- 1. 概要
- 2. filter_var データフィルタリング
- 3. shuffle シャッフル
1. 概要
その他、有用な関数について、記述します。
2. filter_var データフィルタリング
指定したフィルタでデータをフィルタリングします。
filter_var ( mixed $value , int $filter = FILTER_DEFAULT , array|int $options = 0 ) : mixed
冒頭の説明だけだと、わかりにくいですね。
例えば
<?php
$array = [ "10.0.0.1", "172.20.10.2", "192.168.1.10", "126.236.94.87" ];
foreach ($array as $key => $value)
{
$result = filter_var($value, FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE);
if ($result != false)
{
print("[$value] はプライベートアドレスではありません\n");
}
else
{
print("[$value] はプライベートアドレスです\n");
}
}
というコードを書いて実行すると下記の結果が得られます。
[10.0.0.1] はプライベートアドレスです
[172.20.10.2] はプライベートアドレスです
[192.168.1.10] はプライベートアドレスです
[126.236.94.87] はプライベートアドレスではありません
わかりますかしら?
いわゆるプライベートアドレス(「IPアドレス - Wikipedia」参照)かどうかのチェックが簡単にできます。
フィルタやフラグに指定できる値は、「PHP: フィルタの型 - Manual」に説明があります。
3. shuffle シャッフル
シャッフルは、その関数名もずばり。
shuffle(array &$array): bool
ですじゃ。
引数で渡す、配列をぐるぐるかき混ぜてくれます。
一応、戻り値として、「成功した場合に『true』を、失敗した場合に『false』 を返します。」ちゅなことを言うてますが、引数として渡すものが配列ではないとかでない限り、エラーになることはなかろうかと思います。
いつ使うんだろうと思うむきもあるかと思いますが、抽選だとかゲームだとかの使い方を考えると、大変ありがたい関数です。
例えば。
<?php
$array = [ 'グー', 'チョキ', 'パー' ];
while (TRUE)
{
print("じゃんけん ");
fgets(STDIN);
shuffle($array);
print($array[0] . "\n");
}
てなソースを書いて実行すれば。
Enter を打ち続ける限り、延々コンピュータとじゃんけんができるわけです。
わはは、Ctrl+C で抜けなければなりませんがな。
トランプや麻雀のゲームを作るならば、ひと手間考える部分を省けるので、重宝します。
説明では、セキュリティ的に使用する暗号を作成するほどの複雑さはないそうです。
また、バージョン「7.1.0」で「内部的なランダム化のアルゴリズムが、 『libc』の『rand』関数ではなく、 メルセンヌツイスタ 乱数生成器 を使うように 変更されました。」とのことですが。
「『libc』の『rand』関数ではなく」の部分はともかく、「メルセンヌツイスタ 乱数生成器」というのは、なんのこっちゃらわかりません。
|
|