PHP - よく使う関数 - 配列 - その他


クラウディア 


1. 概要
2. キーの有無
3. array_diff 差分を取得
4. list 複数の変数への代入
5. range 正数の配列を作成
6. shuffle シャッフル
7. array_merge 結合

1. 概要

 前ページまでに出現していないものを・・・。

2. キーの有無

 キーの有無は、「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]

3. array_diff 差分を取得

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

4. 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

5. 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

6. 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  4  5  1  3
2 回目
  3  2  5  1  4

7. 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
)
 型の違う、配列同士を結合させることもできるようです。  今んとこ、結合する順番に並ぶようです。