php - よく使う関数 - 配列

 クラウディア
1. 概要
2. 配列数
3. キーの有無
4. array_diff 差分を取得
5. array_push 末尾へ要素の追加
6. list 複数の変数への代入
7. range 正数の配列を作成
8. shuffle シャッフル

1. 概要

 配列の関数の詳細は「PHP マニュアル - 関数リファレンス - 変数・データ型関連 - 配列」をご参照ください。

2. 配列数

 配列の数を数えるには

int count ( mixed $array_or_countable [, int $mode = COUNT_NORMAL ] );
 を使用します。
<?php
$array = array('foo', 'bar');
print('count($array)=['.count($array)."]\n");
?>

 これを実行すると以下の結果が得られます。

> php ソースファイル名.php
count($array)=[2]

3. キーの有無

 キーの有無は isset() もしくは array_key_exists() を使用して判断します。

bool isset ( mixed $var [, mixed $... ] )

bool array_key_exists ( mixed $key , array $array )
 isset と array_key_exists の違いは、null 値を持つキーを true とみなすか false とみなすかだそうで。  isset では null 値を持つキーは false となります。
<?php
$array = array('foo' => null, 'bar' => 'hogehoge');

print('isset($array["foo"])=['.isset($array["foo"])."]\n");
print('isset($array["bar"])=['.isset($array["bar"])."]\n");

print("\n");
print('array_key_exists("foo", $array) = ['.array_key_exists("foo", $array)."]\n");
print('array_key_exists("bar", $array) = ['.array_key_exists("bar", $array)."]\n");
?>

 これを実行すると以下の結果が得られます。

> php ソースファイル名.php
isset($array["foo"])=[]
isset($array["bar"])=[1]

array_key_exists("foo", $array) = [1]
array_key_exists("bar", $array) = [1]

4. array_diff 差分を取得

 実は composer を使って追加したライブラリでどういうクラスが使えるのかを知りたかったのですが・・・。

5. array_push 末尾へ要素の追加

 array_push を使用して、配列の末尾に要素を追加することができます。

int array_push ( array &$array [, mixed $... ] )
 ただし、要素をひとつだけ加えるならばオーバヘッドのないぶん、以下の構文を用いるほうがよいようです。

$array[] = 要素;

6. list 複数の変数への代入

 list を使用すると配列の要素を一度で複数の変数へ代入することができます。

array list ( mixed $var1 [, mixed $... ] )
<?php
$array = array
		(
			array(1, 2, 3),
			array(4, 5, 6),
		);

for ($i=0; $i<count($array); $i++)
{
	list($one, $two, $three) = $array[$i];

	print("$one ,$two, $three\n");
}
?>

 を実行すると以下の結果が得られます。

1 ,2, 3
4 ,5, 6

7. range 正数の配列を作成

 マニュアルによれば、正確には「ある範囲の整数を有する配列を作成する」ということです。

range ( mixed $start , mixed $end [, number $step = 1 ] ) : array
<?php
$array1 = range(1, 5);

foreach ($array1 as $number)
{
	print("  $number");
}

print("\n");

$array2 = range(-4, 7, 2);

foreach ($array2 as $number)
{
	print("  $number");
}
?>

 というソースを書いて、実行すると以下の結果が得られます。
  1  2  3  4  5
  -4  -2  0  2  4  6

8. shuffle シャッフル

 これは、正にシャッフル。  べたな、C言語を使っていると、「rand」関数あたりを使って、ちょっと面倒な関数を作らなければならなかったりしますが・・・。  需要があるんでしょうな。  正にシャッフルできるような関数が用意されているようです。

shuffle ( array &$array ) : bool
 戻り値として、成功時は「TRUE」、失敗時は「FALSE」が返ります。
<?php
$array = range(1, 5);

print("1 回目\n");

shuffle($array);

foreach ($array as $number)
{
	print("  $number");
}

print("\n2 回目\n");

shuffle($array);

foreach ($array as $number)
{
	print("  $number");
}
?>

 というソースを書いて、実行すると以下の結果が得られます(もちろん結果は、実行するたびにばらばらになります)。
1 回目
  2  5  1  4  3
2 回目
  3  4  1  5  2
SirusiKiPuRuU-NEXTTokyo Speed Wi-Fi
 
 
カウンタバックグラウンド