LoginSignup
0
2

More than 3 years have passed since last update.

PHPのビルトイン関数まとめ(配列)

Posted at

はじめに

PHPの学習をはじめたので、アウトプットとして記載します。

ビルトイン関数とは

ビルトインとはあらかじめ組み込まれていることを意味します。
関数は自身で作ることができますが、PHPにはあらかじめ用意された関数があり、それらをビルトイン関数と呼びます。

PHPのビルトイン関数(配列)

implode:配列をつなげる

phpファイル
$d = [2020, 11, 15];
echo implode('_', $d) . PHP_EOL;
=> 2020_11_15

explode:変数を配列にする

phpファイル
$t = '17:32:45';
print_r(explode(':', $t));
=> Array
(
    [0] => 17
    [1] => 32
    [2] => 45
)

array_unshift:配列の先頭に要素を加える、array_push:配列の末尾に要素を加える

phpファイル
$scores = [30, 40, 50];

array_unshift($scores, 10, 20);
print_r($scores);
=> Array
(
    [0] => 10
    [1] => 20
    [2] => 30
    [3] => 40
    [4] => 50
)

array_push($scores, 60, 70);
print_r($scores);
=> Array
(
    [0] => 10
    [1] => 20
    [2] => 30
    [3] => 40
    [4] => 50
    [5] => 60
    [6] => 70
)

array_shift:配列の先頭の要素を削除する、array_pop:配列の末尾の要素を削除する

phpファイル
$scores = [30, 40, 50];

array_shift($scores);
print_r($scores);
=> Array
(
    [0] => 40
    [1] => 50
)

array_pop($scores);
print_r($scores);
=> Array
(
    [0] => 40
)

array_splice:配列の要素を削除・追加できる

phpファイル
$scores = [30, 40, 50, 60, 70, 80];

array_splice($scores, 2, 3); //2番目の要素から3つ分の要素を削除する
print_r($scores);
=> Array
(
    [0] => 30
    [1] => 40
    [2] => 80
)
phpファイル
$scores = [30, 40, 50, 60, 70, 80];

array_splice($scores, 2, 3, 100); //2番目の要素から3つ分の要素を削除し、その位置に100を追加する
print_r($scores);
=> Array
(
    [0] => 30
    [1] => 40
    [2] => 100
    [3] => 80
)
phpファイル
$scores = [30, 40, 50, 60, 70, 80];

array_splice($scores, 2, 0, [100, 101]); //2番目の要素から削除はせずに、100と101を追加する
print_r($scores);
=> Array
(
    [0] => 30
    [1] => 40
    [2] => 100
    [3] => 101
    [4] => 50
    [5] => 60
    [6] => 70
    [7] => 80
)

array_slice:配列から要素を切り取る

phpファイル
$scores = [30, 40, 50, 60, 70];

以下は3行は全て同じ意味の記述
$partial = array_slice($scores, 3, 2); //3番目の要素から2つ分の要素を切り取る
$partial = array_slice($scores, 2); //3番目の要素から最後の要素の要素まで切り取る
$partial = array_slice($scores, -2); //後ろから2番目の要素から最後の要素まで切り取る

print_r($partial);
=> Array
(
    [0] => 60
    [1] => 70
)

sort:配列を値の小さい順に並べ替える、rsort:配列を値の大きい順に並び替える、shuffle:配列の順番はランダムに並び替える

phpファイル
$scores = [40, 50, 20, 30];

sort($scores);
print_r($scores);
=> Array
(
    [0] => 20
    [1] => 30
    [2] => 40
    [3] => 50
)

rsort($scores);
print_r($scores);
=> Array
(
    [0] => 50
    [1] => 40
    [2] => 30
    [3] => 20
)

shuffle($scores);
print_r($scores);
=> Array
(
    [0] => 20
    [1] => 30
    [2] => 40
    [3] => 50
)

array_rand:配列のキーをランダムに切り取る

phpファイル
$scores = [40, 50, 20, 30];

$picked = array_rand($scores, 2);
echo $scores[picked[0]] . PHP_EOL;
echo $scores[picked[0]] . PHP_EOL;
=> 出力する度に配列からランダムに2つの値が出る

array_fill:配列に値を指定した個数入れる

phpファイル
$scores = array_fill(0, 5, 10); //0番目から5個分の要素に10を入れる

range:配列に順番に値を入れる

phpファイル
$scores = range(2, 10); //2~10までの値が配列の要素を入れる
$scores = range(2, 10, 3); //2に3ずつ足して10以下の値を配列の要素に入れる([2, 5, 8])

array_sum:配列を全て足し合わせる

phpファイル
$scores = [1, 2, 3];
echo array_sum($scores); //1+2+3
=> 6

array_merge:複数の配列をつなげる

phpファイル
$a = [3, 4, 8];
$b = [4, 8, 12];
$c = [1, 2];

$merged = array_merge($a, $b, $c); //[3, 4, 8, 4, 8, 12, 1, 2]

array_unique:配列から重複している要素を取り除く

phpファイル
$a = [3, 4, 8];
$b = [4, 8, 12];

$merged = array_merge($a, $b); //[3, 4, 8, 4, 8, 12]
array_unique($merged); //[3, 4, 8, 12]

array_diff:第一引数の配列から第二引数の配列の要素と同じものを取り除く

phpファイル
$a = [3, 4, 8];
$b = [4, 8, 12];

array_diff($a, $b); //[3, 4, 8]から4と8が取り除かれ、[3]となる

array_intersect:引数の配列の共通要素のみ配列にする

phpファイル
$a = [3, 4, 8];
$b = [4, 8, 12];
$c = [3, 4, 8];

array_intersect($a, $b, $c); //[4, 8]

array_map:配列に対し関数の処理を実行する

phpファイル
$prices = [100, 200, 300];

$newPrices = array_map(
  function($n) {return $n * 1.1;}, //第一引数に関数(fn($n) => $n * 1.1に置き換えても同じ意味)
  $prices                //第二引数に配列
);
//$newPrices = [110, 220, 330]

array_filter:配列に関数の処理を実行し、Trueのものだけ取り出す

phpファイル
$numbers = range(1, 10); //$numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

$evenNumbers = array_filter(
  $numbers,              //第一引数に配列
  fn($n) => $n % 2 === 0 //第二引数に関数
);
//$evenNumbers = [2, 4, 6, 8, 10]

array_keys:配列のキーのみ取り出す、array_values:配列のバリューのみ取り出す

phpファイル
$scores = [
  'dog' => 80,
  'cat' => 70,
  'rat' => 60,
];

array_keys($scores); //['dog', 'cat', 'rat']
array_values($scores); //[80, 70, 60]

array_key_exists:指定したキーがあればtrue、なければfalseを返す
in_array:指定したバリューがあればtrue、なければfalseを返す

phpファイル
$scores = [
  'dog' => 80,
  'cat' => 70,
  'rat' => 60,
];

array_key_exists('dog', $scores); //true
in_array(80, $scores); //true

array_search:指定したバリューを探し、そのキーを返す

phpファイル
$scores = [
  'dog' => 80,
  'cat' => 70,
  'rat' => 60,
];

array_search(70, $scores); //cat

asort:キーを保持したまま、バリューを昇順に並び替える
arsort:キーを保持したまま、バリューを降順に並び替える
ksort:キーを昇順に並び替える
krsort:キーを降順に並び替える
※キーを添字以外で指定していた場合、sortやrsortで並び替えるとキーが添字に変換されてしまう。

phpファイル
$scores = [
  'dog' => 80,
  'cat' => 70,
  'rat' => 60,
];

asort($scores);
print_r($scores);
=> Array
(
    [rat] => 60
    [cat] => 70
    [dog] => 80
)

arsort($scores);
print_r($scores);
=> Array
(
    [dog] => 80
    [cat] => 70
    [rat] => 60
)

ksort($scores);
print_r($scores);
=> Array
(
    [cat] => 70
    [dog] => 80
    [rat] => 60
)

krsort($scores);
print_r($scores);
=> Array
(
    [rat] => 60
    [dog] => 80
    [cat] => 70
)

usort:何を比較して並び替えるか定義できる関数(配列の中に複数の配列がある場合)

phpファイル
$data = [
  ['name' => 'dog', 'score' => 80],
  ['name' => 'cat', 'score' => 60],
  ['name' => 'rat', 'score' => 70],
  ['name' => 'fox', 'score' => 60],
];

usort(
  $data,
  function($a, $b){
    if($a['score'] === $b['score']) {
      return 0;
    }                                           //並び替えない時は0を返す
    return $a['score'] > $b['score'] ?  1: -1;  //並び替える時は後ろに回すものに1、前に回すものに-1を返す
  }
);

print_r($data);
=> Array
(
    [0] => Array
        (
            [name] => cat
            [score] => 60
        )

    [1] => Array
        (
            [name] => fox
            [score] => 60
        )

    [2] => Array
        (
            [name] => rat
            [score] => 70
        )

    [3] => Array
        (
            [name] => dog
            [score] => 80
        )

)

array_column:配列のカラム内の値を取得する

phpファイル
$data = [
  ['name' => 'dog', 'score' => 80],
  ['name' => 'cat', 'score' => 60],
  ['name' => 'rat', 'score' => 70],
  ['name' => 'fox', 'score' => 60],
];

$scores = array_column($data, 'score');
print_r($scores);
=> Array
(
    [0] => 80
    [1] => 60
    [2] => 70
    [3] => 60
)

array_multisort:配列を複数のカラムで並び替える時に使う

phpファイル
$data = [
  ['name' => 'dog', 'score' => 80],
  ['name' => 'cat', 'score' => 60],
  ['name' => 'rat', 'score' => 70],
  ['name' => 'fox', 'score' => 60],
];

$scores = array_column($data, 'score');
$names = array_column($data, 'name');

array_multisort(
  $scores, SORT_DESC, SORT_NUMERIC, //SORT_DESCは降順、SORT_NUMERICは数値を意味するオプション
  $names, SORT_DESC, SORT_STRING, //SORT_STRINGは文字列を意味するオプション、デフォルトは昇順
  $data
);

print_r($data);
=> Array
(
    [0] => Array
        (
            [name] => dog
            [score] => 80
        )

    [1] => Array
        (
            [name] => rat
            [score] => 70
        )

    [2] => Array
        (
            [name] => fox
            [score] => 60
        )

    [3] => Array
        (
            [name] => cat
            [score] => 60
        )

)

参考

ドットインストール

最後に

本投稿が初学者の復習の一助となればと幸いです。

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2