はじめに
PHPの学習をはじめたので、アウトプットとして記載します。
ビルトイン関数とは
ビルトインとはあらかじめ組み込まれていることを意味します。
関数は自身で作ることができますが、PHPにはあらかじめ用意された関数があり、それらをビルトイン関数と呼びます。
PHPのビルトイン関数(配列)
implode:配列をつなげる
$d = [2020, 11, 15];
echo implode('_', $d) . PHP_EOL;
=> 2020_11_15
explode:変数を配列にする
$t = '17:32:45';
print_r(explode(':', $t));
=> Array
(
[0] => 17
[1] => 32
[2] => 45
)
array_unshift:配列の先頭に要素を加える、array_push:配列の末尾に要素を加える
$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:配列の末尾の要素を削除する
$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:配列の要素を削除・追加できる
$scores = [30, 40, 50, 60, 70, 80];
array_splice($scores, 2, 3); //2番目の要素から3つ分の要素を削除する
print_r($scores);
=> Array
(
[0] => 30
[1] => 40
[2] => 80
)
$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
)
$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:配列から要素を切り取る
$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:配列の順番はランダムに並び替える
$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:配列のキーをランダムに切り取る
$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:配列に値を指定した個数入れる
$scores = array_fill(0, 5, 10); //0番目から5個分の要素に10を入れる
range:配列に順番に値を入れる
$scores = range(2, 10); //2~10までの値が配列の要素を入れる
$scores = range(2, 10, 3); //2に3ずつ足して10以下の値を配列の要素に入れる([2, 5, 8])
array_sum:配列を全て足し合わせる
$scores = [1, 2, 3];
echo array_sum($scores); //1+2+3
=> 6
array_merge:複数の配列をつなげる
$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:配列から重複している要素を取り除く
$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:第一引数の配列から第二引数の配列の要素と同じものを取り除く
$a = [3, 4, 8];
$b = [4, 8, 12];
array_diff($a, $b); //[3, 4, 8]から4と8が取り除かれ、[3]となる
array_intersect:引数の配列の共通要素のみ配列にする
$a = [3, 4, 8];
$b = [4, 8, 12];
$c = [3, 4, 8];
array_intersect($a, $b, $c); //[4, 8]
array_map:配列に対し関数の処理を実行する
$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のものだけ取り出す
$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:配列のバリューのみ取り出す
$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を返す
$scores = [
'dog' => 80,
'cat' => 70,
'rat' => 60,
];
array_key_exists('dog', $scores); //true
in_array(80, $scores); //true
array_search:指定したバリューを探し、そのキーを返す
$scores = [
'dog' => 80,
'cat' => 70,
'rat' => 60,
];
array_search(70, $scores); //cat
asort:キーを保持したまま、バリューを昇順に並び替える
arsort:キーを保持したまま、バリューを降順に並び替える
ksort:キーを昇順に並び替える
krsort:キーを降順に並び替える
※キーを添字以外で指定していた場合、sortやrsortで並び替えるとキーが添字に変換されてしまう。
$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:何を比較して並び替えるか定義できる関数(配列の中に複数の配列がある場合)
$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:配列のカラム内の値を取得する
$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:配列を複数のカラムで並び替える時に使う
$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
)
)
参考
ドットインストール
最後に
本投稿が初学者の復習の一助となればと幸いです。