【PHP】競技プログラミングで使った関数まとめ(HackerRank)

はじめに

競技プログラミングをしていると、Webアプリ制作では全く使わなかった関数によく遭遇するので備忘録としてまとめておきます。

※基本的な標準入力の内容に関しては以下でまとめています。

PHPによる標準入力

HackerRankの歩き方

HackerRankの問題をpaiza.ioで解いてみた

HackerRankで使った関数まとめ

超頻出な関数

・fopen() 参考ファイルまたはURLを開く

$fptr = fopen(getenv("OUTPUT_PATH"), "w");
$stdin = fopen("php://stdin", "r");

“w”は書き出し(write)のみ、”r”は読込(read)のみでオープンするためのパラメータ(補助変数)らしいです。

・array_map() 参考指定した配列の要素にコールバック関数を適用。返り値は配列で返却する。

HackerRankの例)

$ar = array_map('intval', preg_split('/ /', $ar_temp, -1,
PREG_SPLIT_NO_EMPTY));

preg_split:正規表現で$ar_tempで受け取った文字列を分割。-1は要素数の制限がないことを意味。PREG_SPLIT_NO_ENPTYで空文字列は出力しないように設定。

補足
コールバック関数とは、呼び出し先の関数の中で呼び出される関数のことです。

・fwrite() 参考ファイルの書き込み処理

fwrite($fptr, $result . "\n");

第一引数でfopen()で使用して作成したリソース、第二引数で書き込む文字列。

・fclose() 参考オープンされたファイルをクローズする。

fclose($stdin);
fclose($fptr);

・intval() 参考変数を整数の値で取得する。※データ型

$n = intval(trim(fgets(STDIN)));

・trim()参考文字列の先頭および末尾にあるホワイトスペースを取り除く

$n = intval(trim(fgets(STDIN)));

頻出な関数

・count()参考変数に含まれるすべての要素、 あるいはオブジェクトに含まれる何かの数を数える

配列で使う関数

・array() 参考配列を作成

$arr = array();

変数$arrを配列として定義しています。

・array_sum() 参考配列の値の合計を計算

function simpleArraySum($ar) {
  return array_sum($ar);
}

関数を呼び出された際に渡された配列の引数の和を求めています。

・array_filter()参考コールバック関数を使用して、配列の要素をフィルタリング

文字列

・substr_count()参考指定した文字列の出現回数を数える

知っ得な関数

・var_dump()参考配列やオブジェクトの値がどうなっているのか調べる

var_dump($arr);

出力すると。

この場合は、変数の内容が配列、要素の数が3つ、配列内のキーと値が表示。

まさる
var_dumpは変数がいまどんな値を持っているのか知るのにとても役立ちます。
ちょび
echoで出力できなくなった際などに大活躍しますね!!

・print_r()参考配列やオブジェクトの値がどうなっているのか調べる

print_r($arr);

出力すると。

var_dumpに比べて少しシンプル。配列で各要素のキーと値のみ表示。

補足
上記のような連想配列を出力したい場合は以下のようになります。

echo $arr[0][0] //11と出力。

おわりに

随時更新していきます!

参考

jQueryやJavaScriptでvar_dump()したいときは、console.log(hoge)してChromeのコンソールでみればいいらしい

PHP で echo した時に Array と表示される

PHPまとめ – 配列操作

配列の偶数番目の要素、奇数番目の要素を抽出する

配列(リスト)から特定の条件にマッチする要素のみを取り出すには

前の要素を参照しつつのループ処理

PHP 文字列操作関数まとめ (文字数のカウント、分割、結合等)

[PHP] 文字列処理などの備忘録集

コメントを残す