😀

【PHP】AtCoder, Paizaのスキルチェックに使えそうな配列の関数

1 min read

分割、削除

array_chunk — 配列を分割する
array_pop — 配列の末尾から要素を取り除く
array_reduce — コールバック関数を繰り返し配列に適用し、配列をひとつの値にまとめる
array_slice — 配列の一部を展開する

結合、代入、置換

array_splice — 配列の一部を削除し、他の要素で置換する
array_combine — 一方の配列をキーとして、もう一方の配列を値として、ひとつの配列を生成する
array_fill_keys — キーを指定して、配列を値で埋める
array_fill — 配列を指定した値で埋める
array_filter — コールバック関数を使用して、配列の要素をフィルタリングする
array_pad — 指定長、指定した値で配列を埋める
array_replace — 渡された配列の要素を置き換える

検索

in_array — 配列に値があるかチェックする
array_key_exists — 指定したキーまたは添字が配列にあるかどうかを調べる
array_merge_recursive — 一つ以上の配列を再帰的にマージする
array_multisort — 複数または多次元の配列をソートする
array_search — 指定した値を配列で検索し、見つかった場合に対応する最初のキーを返す

取得

count — 変数に含まれるすべての要素、 あるいはオブジェクトに含まれる何かの数を数える
range — ある範囲の整数を有する配列を作成する
natcasesort — 大文字小文字を区別しない"自然順"アルゴリズムを用いて配列をソートする
array_intersect_assoc — 追加された添字の確認も含めて配列の共通項を確認する
array_intersect_key — キーを基準にして配列の共通項を計算する
array_sum — 配列の中の値の合計を計算する
array_reverse — 要素を逆順にした配列を返す
array_unique — 配列から重複した値を削除する
max — 最大値を返す
min — 最小値を返す
array_sum — 配列の中の値の合計を計算する
array_count_values — 配列の値の数を数える
array_column — 入力配列から単一のカラムの値を返す
array_diff_assoc — 追加された添字の確認を含めて配列の差を計算する
array_diff_uassoc — ユーザーが指定したコールバック関数を利用し、 追加された添字の確認を含めて配列の差を計算する

※paizaのスキルチェックをしていたら「文字列が異なる場合、異なる文字を抽出する」ケースがあった。

文字列をstr_splitで配列にして、array_diffすればOKだろと思ったがつまずいた。

<?php
// Your code here!
strDiffCount("hello", "hallo"); //ケース1 異なるのは eとa
strDiffCount("hello", "haloo");  //ケース2 異なるのは eとaとl
function strDiffCount($str1, $str2){
   var_dump(array_diff(str_split($str1), str_split($str2)));  // eとa
   
   var_dump(array_diff_assoc(str_split($str1), str_split($str2))); //eとaとl   
   
}

array_diffだとケース2のような場合に文字lを違いとみなさないためにつまずいた。なのでarray_diff_assocをデフォルトで使って解決。

今後はarray_diff_assocを使っておけば問題はなさそうでやんす

Discussion

ログインするとコメントできます