PHPを触り始めてから使った関数のメモ。
なんとなく命名の仕方が他と違うような感じもあって覚えにくい。
特にjavascriptと同時に書いていると混乱する。
気が向いたときに追記、更新します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
# 出力系 echo //出力 shortcode <?=$var?> print_r() //変数を見やすい形で出力 var_dump() //変数をdumpする var_export( $boolean, true ); //PHPの形式でdumpできる、第二引数でreturn値(変数に使える) #数値処理 intval() //int化 floatval() //float化 number_format() //数値をカンマ区切りにできる、有効桁数の設定や区切りの変更も # 配列 foreach ($arr as $i => $v) {} //要素走査 isset($arr[1]) //要素の存在確認 unset($arr[1]) //要素削除 count($arr) //要素数確認 array_diff($arr1,$arr2) //配列の比較/差分取得 array_filter(arr,filter_func); //フィルタ関数を通った配列を返す array_search(word,arr) //検索してインデックスを返す array_column(arr,key) //配列の特定の値をリスト化して返す よくsearchと併用 array_reverse(arr) //逆順序の行列を返す # JSON json_decode(json,false) //JSONをオブジェクトにデコードする(デフォルト) json_decode(json,true) //JSONを連想配列にデコードする //オブジェクトは->で要素アクセス json_encode() //JSONにエンコード # ファイル取得 file_get_contents () // http://php.net/manual/ja/function.file-get-contents.php // API get/post にも使用 fopen(),fwrite(),fread(),fgets(),fputs() //ファイル操作 filesize() //ファイルサイズ取得,freadで使う file_exists() //ファイルの存在確認 # ファイル取得補助 ob_start(); //出力バッファリング ob_get_contents();//バッファ内容獲得 ob_end_flush(); //ちゃんと終わらせる fileatime() //ファイル最終アクセス時 filemtime() //ファイル最終更新時 filectime() //ファイル最終属性更新時 # date date("F d Y H:i:s.",time) //timeを日付に date_default_timezone_set('Asia/Tokyo'); //timezone |
ユースケース:3項演算子
他言語と同じように書けるが、ネストするときは注意が必要。
1 2 3 4 5 6 7 8 |
$type=1; echo ($type==1?"A":$type==2?"B":"C"); $type=2; echo ($type==1?"A":$type==2?"B":"C"); $type=3; echo ($type==1?"A":$type==2?"B":"C")."\n"; // => BBC |
最初の式の結果がおかしい。
これは式が以下のように評価されるからでした。
1 |
echo (($type==1?"A":$type==2)?"B":"C"); |
まず”A”と評価され、文字”A”がtrueと判断され”B”と出力されます。
なのでちゃんと意図した式を分けておく必要があります。
1 |
echo ($type==1?"A":($type==2?"B":"C")); |
そもそも振る舞いがわかりにくいので積み重ねて使用しないように公式で言われていますが、便利なので使いたくなりますよね。
ユースケース:APIを使った情報取得
ファイルを得るための関数を用いて簡単に取得ができる。
1 2 |
$res = file_get_contents($url); $data= json_decode($res)->data; |
他言語でもそうだがPOST時の書き方は少し面倒。
レスポンスヘッダもグローバルの$http_response_header
に保存されるなど、並列して使う時に少し使いにくい面がある。
そこでcurl
を使うと比較的楽になる。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
$POST_DATA = ['hoge' => 'huga',]; $HEADERS = ['Content-Type:application/x-www-form-urlencoded',]; $option = [ CURLOPT_RETURNTRANSFER => true, // 変数に入れる CURLOPT_TIMEOUT => 3, // タイムアウト CURLOPT_SSL_VERIFYPEER => false,// 証明書対策 CURLOPT_POST => true, // POST CURLOPT_POSTFIELDS => $POST_DATA, CURLOPT_HTTPHEADER => $HEADERS ]; $curl=curl_init($url); curl_setopt_array($curl, $option); $output= curl_exec($curl); curl_close($curl); |
必要な情報量は変わらないが簡素に書ける。
ローカル(windows)で行う場合はcurlのインストールと、php.iniの設定extension=ext/php_curl.dll
を有効化しておく。
ファイル読み込みと書き込み
fopen(),fclose()
で挟んで読み書き可能です。
1 2 3 4 5 6 7 |
$fp = fopen($filepath, 'r'); $content = fread($fp, filesize($filepath) [, isPHParray]); fclose($fp); $fp = fopen($filepath, 'w'); fwrite($fp, $content); fclose($fp) |
単純なファイル読み書きはfile_get_contents(),file_put_contents()
が楽です。
1 2 3 4 5 |
//読み込みラッパー $content = file_get_contents($filepath [, options]); //書き込みラッパー file_put_contents($filepath, $content [, option]); |