【CakePHP】1人前のケーキ職人になるまで

パティシエじゃないよエンジニアだよ

【PHP】覚えておきたい関数

前回、PHPを始める前に関数は把握しておきましょうと言いましたが、実際どのような関数があるか紹介します。

簡単なアプリを作成した時に、これはよく使ったし便利だなーと思った関数一覧になります。
 

関数を利用する時の注意点

関数を使う前に、PHPのバージョンを確認しましょう。

開発環境では使えても、実際にサーバーにアップロードするとバージョンが違って使えない場合があります。

 

覚えておきたい10の関数

指定した変数に関する情報を解りやすく出力する関数。その他にvar_dump()などがありますが個人的にprint_r()の方が見やすいです。

fgets

ファイルポインタから 1 行取得します。引数がSTDINで標準入力です。

trim

文字列の先頭および末尾にあるホワイトスペースを取り除く。上記のfgetsで入力した後、文字列の最後の改行を取り除く場合によく使います。fgetsからのtrimは呪文だと思うのがいいかもしれないです。

explode

文字列を文字列により分割する

array explode ( string $delimiter , string $string [, int $limit = PHP_INT_MAX ] )

$delimiterで文字列を区切ってくれます。返り値は配列になり、その要素は$delimiterで区切られた文字列になります。

implode

配列要素を文字列により連結する

string implode ( string $glue , array $pieces )
string implode ( array $pieces )

以外とexplodeより使う機会がなかった関数です。そのままなんですけどexplode()の逆の動きをしてくれます。

number_format

数字を千位毎にグループ化してフォーマットする

string number_format ( float $number [, int $decimals = 0 ] )
string number_format ( float $number , int $decimals = 0 , string $dec_point = "." , string $thousands_sep = "," )

10000➡︎10,000のように変換してくれます。地味に便利。
引数の数で細かい設定を指定できます。

この関数は 1 つか 2 つもしくは 4 つのパラメータを受け取ります (3 つはありません) :

パラメータが 1 つだけ渡された場合、 number は千位毎にカンマ (",") が追加され、 小数なしでフォーマットされます。

パラメータが 2 つ渡された場合、number は decimals 桁の小数の前にドット (".") 、 千位毎にカンマ (",") が追加されてフォーマットされます。

パラメータが 4 つ全て渡された場合、number はドット (".") の代わりに dec_point が decimals 桁の小数の前に、千位毎にカンマ (",") の代わりに thousands_sep が追加されてフォーマットされます。

指定した値を配列で検索し、見つかった場合に対応する最初のキーを返す

mixed array_search ( mixed $needle , array $haystack [, bool $strict = false ] )
array_sum

配列の中の値の合計を計算する

number array_sum ( array $array )

返り値は整数かfloatになります。

array_key_exists

指定したキーまたは添字が配列にあるかどうかを調べる

bool array_key_exists ( mixed $key , array $array )

array_searchと違ってこちらは有るか無いかのbool型で返ってくるので、ただキーの有無を知りたい場合はこちらの方が良いでしょう。

array_column (ver.5.5 以降)

入力配列から単一のカラムの値を返す

array array_column ( array $input , mixed $column_key [, mixed $index_key = null ] )

配列 input の中から column_key で指定した単一のカラムの値を返します。 オプションで index_key も指定できます。

※ただし、この関数は古いバージョンには対応していないので注意しましょう。その場合は

/**
 * 指定したキーの値を取得する。2次元配列のみ対応
 * @param target_data 値を取り出したい多次元配列
 * @param column_key  値を返したいカラム
 * @param index_key   返す配列のインデックスとして使うカラム
 * return array       入力配列の単一のカラムを表す値の配列を返し
 */
function array_column ($target_data, $column_key, $index_key = null) {

    if (is_array($target_data) === FALSE || count($target_data) === 0) return FALSE;

    $result = array();
    foreach ($target_data as $array) {
        if (array_key_exists($column_key, $array) === FALSE) continue;
        if (is_null($index_key) === FALSE && array_key_exists($index_key, $array) === TRUE) {
            $result[$array[$index_key]] = $array[$column_key];
            continue;
        }
        $result[] = $array[$column_key];
    }

    if (count($result) === 0) return FALSE;
    return $result;

}

のように、関数を作ってしまいましょう。

まとめ

ざっと関数をまとめて見ました。まとめていくうちに、そういえば、メソッドと関数の違いってなんだろう?って思いました。
次回はそのあたりとオブジェクト指向について書いていきます。

コードを載せる時に、phpと指定してもうまく色がつかないんですけど、なんなんですかね...

<参考にしたサイト>
PHP: Hypertext Preprocessor


qiita.com