array_~配列から特定条件の要素を取得し、配列で返す

array_flip()

構文は「array_flip(対象配列);」です。
配列のキーと値を反転させて返します。同じ値が複数存在するケースでは最後のキーがその値として返され、その他の値は無くなります。

1
2
$a = ["B" => "b","C" => "c","D" => "d","E" => "a","A" => "a","F" => "a"];
print_r(array_flip($a));
実行結果:
(
[b] => B
[c] => C
[d] => D
[a] => F
)

array_values()

構文は「array_values(対象配列);」です。
対象配列から値を全部取り出し、新たに整数のキーを割り当てて配列として返します。

1
2
$a = ["B" => "b","C" => "c","D" => "d","E" => "a","A" => "a","F" => "a"];
print_r(array_values($a));
実行結果:
(
[0] => b
[1] => c
[2] => d
[3] => a
[4] => a
[5] => a
)

array_keys()

構文は「array_keys(対象配列 [, 検索したい値, [型比較]]);」です。
オプションの第二引数の検索したい値を省略すると、配列のキー全てを抽出し、整数をキーとする配列で返します。第二引数を設定すると指定した値を持つ要素のキーのみが返されます。第三引数は省略すると型を考慮しない比較(false)をします。trueを指定すると型比較を考慮します。

1
2
3
$a = ["B" => "b","C" => "c","D" => "d","E" => "a","A" => "a","F" => "a"];
print_r(array_keys($a));
print_r(array_keys($a, 'a'));
実行結果:
(
[0] => B
[1] => C
[2] => D
[3] => E
[4] => A
[5] => F
)
(
[0] => E
[1] => A
[2] => F
)

array_diff()とarray_diff_assoc()

構文は「array_diff(対象配列1, 対象はいれつ2 [, 対象はいれつ・・・]);」です。
対象配列1を第二引数以降の配列と比較し、対象配列1の要素の中で他の配列には存在しない要素のみを含む配列を返します。また、他の配列に存在しない要素が複数存在すれば、一番最後に一致したキーとそれに対応する値のセットが返されます。array_diff()は一つの次元しか調べれませんが、array_diff($a[0], $b[0])といった書式にすることで深い次元でも調べることができます。

1
2
3
4
$a = ["A" => "a","B" => "b","C" => "c","AA" => "aa","A" => "aa"];
$b = ["B" => "b","C" => "c"];
$c = ["D" => "d","E" => "e","F" => "f"];
print_r(array_diff($a, $b, $c));
実行結果:
(
[A] => aa
[AA] => aa
)

構文は「array_diff_assoc(対象配列1, 対象はいれつ2 [, 対象はいれつ・・・]);」です。
添え字も比較します。

1
2
3
4
5
6
// $aのhは[0]というキーを持ちます。
$a = ["A" => "a","B" => "b","C" => "c", "h"];
$b = ["B" => "b","C" => "c"];
// $cのhは[1]というキーを持ちます。
$c = ["D" => "d","E" => "e","F" => "f", "g", "h"];
print_r(array_diff_assoc($a, $b, $c));
実行結果:
(
[A] => a
[0] => h
)

array_intersect()とarray_intersect_assoc()

構文は「array_intersect(対象配列1, 対象はいれつ2 [, 対象はいれつ・・・]);」です。
対象配列1の値のうち、各配列にも共通する値を含むものを連想配列で返します。

1
2
3
4
$a = ["A" => "10","B" => "20","C" => "30"];
$b = ["D" => "20","E" => "10","F" => "60"];
$c = ["G" => "70","H" => "20","I" => "10"];
print_r(array_intersect($a, $b, $c));
実行結果:
(
[A] => 10
[B] => 20
)

構文は「array_intersect_assoc(対象配列1, 対象はいれつ2 [, 対象はいれつ・・・]);」です。
対象配列1の値のうち、各配列にも共通する要素を含むものを連想配列で返します。キーの添え字も比較に使われます。

1
2
3
4
$a = ["A" => "10","B" => "20","C" => "30"];
$b = ["B" => "20","A" => "10","F" => "60"];
$c = ["G" => "70","B" => "20","A" => "10"];
print_r(array_intersect_assoc($a, $b, $c));
実行結果:
(
[A] => 10
[B] => 20
)

array_shift()とarray_unshift()

shiftの構文は「array_shift(対象配列)」です。
配列の先頭要素を取得します。取り出した後は全ての要素が前に移動し、添え字キーは新たに0から割り当てられますが、連想配列の文字列からなるキーはそのままになります。

unshiftの構文は「array_unshift(対象配列, 追加する値1 [, 追加する値2, ・・・]);」です。
配列の先頭要素の前に新たな要素を追加します。

1
2
3
4
5
$a=["c","b","a"];
array_shift($a).'。';
print_r($a);
array_unshift($a, "D", "E");
print_r($a);
実行結果:
(
[0] => b
[1] => a
)
(
[0] => D
[1] => E
[2] => b
[3] => a
)
1
2
3
4
5
$a=["c" => "10","b" => "20","a" => "30"];
array_shift($a).'。';
print_r($a);
array_unshift($a, "D", "E");
print_r($a);
実行結果:
(
[b] => 20
[a] => 30
)
(
[0] => D
[1] => E
[b] => 20
[a] => 30
)

array_slice()

構文は「array_slice(対象配列, オフセット [, 要素数, [キーを保持するかどうか]])」です。
配列の一部を切り取って取得します。第二引数のオフセットがプラスであれば先頭からカウントされます。マイナスの場合、最後尾から数えられます。第三引数の要素数がプラスの場合、その値が返す要素数の最大値となります。マイナスの場合、配列の最後尾から連続する複数要素が返されます。省略すると先頭からオフセットで指定した位置から最後尾までを取得します。第四引数はデフォルトでfalseになっていますが、trueを指定するとキーを保持するようになります。

1
2
3
4
$a=["A" => "a","B" => "b","C" => "c","D" => "d","E" => "e"];
print_r(array_slice($a, 2));
print_r(array_slice($a, 2, 2));
print_r(array_slice($a, 2, -2));
実行結果:
(
[C] => c
[D] => d
[E] => e
)
(
[C] => c
[D] => d
)
(
[C] => c
)

range()

構文は「range(開始値, 終了値 [, 増減数]);」です。
range()は開始値から終了値までの間で設定された値を持つ配列を作ります。オプションの第三引数は省略した場合、デフォルトの1が採用されます。この部分は要素ごとの増加数を指定します。開始値と終了値には文字列シーケンスも使えますが、複数の文字を入れても最初の一文字だけが判定に使われます。

1
2
3
4
5
6
7
8
9
10
foreach (range(0, 15, 5) as $val) {
echo '
<div>'.$val.'</div>
';
}
foreach (range('A', 'G', 2) as $val) {
echo '
<div>'.$val.'</div>
';
}
実行結果:

0
5
10
15
A
C
E
G