配列関数

<?php

$data = [対象の配列];

// 配列の要素数を取得する
count($data);


// それぞれの要素の個数をカウントする
array_count_values($data); // 要素名をキー、個数を値とする連想配列を返す


// 配列を連結する
array_merge([1,2], [8,2]);
  => [1,2,8,2]
array_merge(
    ['name' => 'sato', 'age' => 26],
    ['name' => 'suzuki', 'address' => 'Tokyo']
); 
  => ['name' => 'suzuki', 'age' => 26, 'address' => 'Tokyo'] // キーが重複している場合上書きされる
array_merge_recursive(
    ['name' => 'sato', 'age' => 26],
    ['name' => 'suzuki', 'address' => 'Tokyo']
);
  => ['name' => ['sato', 'suzuki'], 'age' => 26, 'address' => 'Tokyo'] // キーが重複しているとき入れ子の配列を生成する
 

// 要素を連結する
implode(', ', $data); // 配列の各要素を「, 」で連結した文字列を取得する


// 配列に要素を追加・削除する
array_push($data, 'apple'); // 末尾に'apple'を追加する(※関数を呼ぶオーバーヘッドが少ない分ブラケット構文の方がベター)
  => 8  // 追加後の要素数を返す
array_pop($data); // 末尾の要素を削除する
  => 'apple' // 削除された要素を返す
array_shift($data) // 先頭の要素を削除する
  => 'banana' // 削除された要素を返す
array_unshift($data, 'mango') // 先頭に'mango'を追加する
  => 8 // 追加後の要素数を返す


// 配列に複数要素を追加・削除する
array_splice($data, 5, 2, ['grape', 'peach']); // 5番目の要素($data[5])から数えて2つの要素を削除し、別の要素(群)で置換
  => ['apple','banana'] // 削除された要素を返す
array_splice($data, 5); // 5番目以降の要素をすべて削除
array_splice($data, 5, 0, ['grape', 'peach']); // 5番目の要素の前に新たな要素(群)を挿入


// 配列から特定範囲の要素を(配列を変更せずに)取得する
array_slice($data, 2, 3); // 2番目の要素から数えて3つの要素を取得する
array_slice($data, 2); // 2番目以降のすべての要素を取得する


// 要素の位置を取得する
array_search('apple', $data); // 'apple'を検索する
  => 5 // 最初に要素が見つかった位置を返す
  => false // なかった場合falseを返す


// 特定の要素の存在を判定する
in_array('apple', $data); // 'apple'があるか判定する


// 配列の内容を順に処理する
array_walk($data, function($val, $key) {
  print "{$val}:{$key}";
});


// 配列内の要素を加工する
array_map(
  function($v) {
    return mb_convert_case($v, MB_CASE_UPPER); // 大文字に変換
  }, $data
);
=> ['APPLE', 'BANANA' ...] // 加工後の配列を返す


// 配列を特定の条件で絞り込む
array_filter($data, function($v) {
  return mb_strlen($v) < 6; // 要素を残すならばtrue、除去するならfalseを返すことが関数の条件
}
=> ['apple', 'mango', ...]


// 配列内の要素を順に処理して一つにまとめる
$num = [2,4,6,8];
array_reduce($num, function($result, $x) { 
  return $result * $x;  // n番目の要素$xとn-1番目までの演算結果$result(n=1のとき初期値)を用いた演算結果が、$resultに格納される
}, 1); // 第三引数は初期値
=> 384
?>