1. 概要
配列の関数の詳細は「PHP マニュアル - 関数リファレンス - 変数・データ型関連 - 配列」をご参照ください。
2. 配列数
配列の数を数えるには
int count ( mixed $array_or_countable [, int $mode = COUNT_NORMAL ] );
を使用します。
<?php
$array = array('foo', 'bar');
print('count($array)=['.count($array)."]\n");
?>
これを実行すると以下の結果が得られます。
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");
?>
これを実行すると以下の結果が得られます。
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 回目
4 5 2 3 1
2 回目
5 3 1 2 4
9. array_merge 結合
本項は、「【PHP】配列おさらい〜結合編 - Qiita」を参考にさせていただきました。
<?php
$array1 = array('1', '2');
$array2 = array('a', 'b');
$result = array_merge($array1, $array2);
print_r($result);
?>
というソースを書いて、実行すると以下の結果が得られます。
Array
(
[0] => 1
[1] => 2
[2] => a
[3] => b
)
型の違う、配列同士を結合させることもできるようです。
また、今んとこ、結合する順番に並ぶようです。