IT関連

PHP 自分の備忘録

投稿日:2019年9月24日 更新日:

事前知識

文字コード

PHPはUTF-8N(ボムなし)で保存する。BOMはByte Order Markの略称。

改行コードはLinuxに入れる場合はLFで。

LF(UNIX.Linux.MacOS)
LF+CR(Windows)

 

文字化けが起きたとき調べること

1.PHPファイルを保存したときの文字コード
2.PHPファイル内で指定した文字コード(meta charset)
3.サーバ内の文字コード
4.PHPインタプリタ内の文字コード
5.表示するブラウザの文字コード

 

エスケープシーケンス

これを知っておかないと「It’s」などのシングルクォーテーションを使う文字や、ダブルクォーテーションの中でダブルクォーテーションを使う場合に表現できない。

バックスラッシュはMacの場合「Option+¥」で出せる。

 

変数の決まり

・変数の前には$をつける
・一文字目は半角アルファベットか半角アンダースコア
・二文字目は半角アルファベットか半角アンダースコアか半角数字
・アルファベットの大文字・小文字は区別される。
・ハイフンは使えない
・変数名の後ろは半角スペースをあける。空けたくない場合は{}で括る。

 

基礎

コメントアウト

 

ヒアドキュメント

終端記号はEOTでなくても構わない。あまり使いどころはわからないけど、改行や字下げが保持される。

’EOT’とすれば変数は展開されない、ナウドキュメント。”EOT”にすれば変数を埋め込める、ヒアドキュメント。

 

文字の結合

文字をつなげるときはドットでつなぐ

 

エスケープ処理

別名サニタイジング(消毒、無毒化)。この処理をしておかないと、ユーザーから受け取った文字列がそのままブラウザに展開されてしまうので、不正なコードを実行させられてしまう。

 

データ型

データには複数の型がある。PHPは文字を勝手に数値として判断してくれるような曖昧な特徴があるので注意。

変数の型はvar_dumpで調べることができる。

 

型変換

型変換をする方法にキャストというやり方がある。(型)を前に置く。変数に対しても使える。

 

 

関数類

 絶対値を返す abs

(絶対値とは原点からの距離、-はない)

符号を逆転する

小数点以下を切り捨て floor

小数点以下を切り上げ ceil

整数の下2桁を切り捨てする(割引)

1080円を1000円や、1250円を1200円にする。
例えば1080を100で割ると10.8それをfloorすると10になり、X100すると1000円。
1250を100で割ると12.5になり、12になり、X100すると1200円になる。

ROUNDDOWNする

PHPはROUNDしかなく強制的に四捨五入されてしまうので、ROUNDDOWNは難しいみたい。円周率を2桁でROUNDDOWNする場合は簡単だが、10桁の場合はちょうど繰り上がりする。

大文字に変換 strtoupper

文字の切り出し substr

ビルトイン関数

固定長のデータを扱うときなどにも便利。最後までの場合は第3引数は省略してもよい。

文字の出現数のカウント substr_count

その文字列の中に、特定の文字が何回現れたか

何文字目にあるかを探す strpos、mb_strpos

ビルトイン関数

日本語などのマルチバイト文字はmb_strposを使用すること。

行の先頭や行末のスペースを取り除く trim

ビルトイン関数

 

ランダム値を取得する rand

引数1が最小値、引数2が最大値で指定

 

ランダムを取得する mt_rand

ドットインストールで使っていた。通常のrandよりも高速らしい。引数の指定は同じ。

 

四捨五入 round

小数の桁を指定して表示する number_format

ビルトイン関数。

カンマ区切りを追加する。小数点の桁を表示することもできる。

通常はroundで事足りるが、0をroundした場合は、少数桁は表示されず0となる。number_formatを使ってあげるとよい。

置換 str_replace

ビルトイン関数

使ってはいけない文字を置換するなどにも使える。

位置と桁数を指定して置換 substr_replace

ビルトイン関数

 

 

文字数の長さ strlen、mb_strlen

ビルトイン関数

日本語などのマルチバイト文字はmb_strlenを使用する。

数字の先頭を0で桁埋め sprintf

ビルトイン関数

数字の0埋め str_pad

 配列から最大値/最小値 max/min

連想配列でmaxとmin

ややこしそうに見えるがキーと値は並列の1行もの。maxやminの結果はあくまで値の最大値と最小値を返す。キーは関係ない。

 

連想配列でカウント

これも上記と同じ。キーと値は並列の1行もの。キーと値の1対の数がcountで返される。

 

配列にある値を検索してインデックスを返す

 

文字列を数値・整数に変換する

キャスト演算子を使う

intval関数を使う。変換できない文字列を渡した場合は0になります。小数点以下の切り捨てにも使える。

10進数を2進数に変換する

 

配列から先頭の要素を取り出す array_shift

配列の先頭の要素(一番左)を取り出して他の要素も左に詰める。

戻り値をとるようにすれば、取り出した要素の値を受け取れる

 

配列の末尾から要素を取り除く array_pop

 

配列の先頭を後方に移動し、元ある要素を左にずらす

「あいうえお」の「あ」を後方に持っていき、「いうえお」を先頭側にずらし「いうえおあ」にするやり方。

 

配列の最後を先頭に移動し、元ある要素を右にずらす

array_popで末尾のデータを抜き取れ、array_shiftを使えば配列の先頭に追加できる。両方とも使えば実現できる。

 

配列の先頭の要素に挿入し右にずらす。array_unshift

第1引数に配列を、第2引数に挿入したい値を入れる。

挿入された他の要素は右にずれる、というか再度番号が振り直される感じ。

第2引数以降のパラメータも増やしてもいいみたい。順番は下記の通り。

 

配列の最後の要素の後ろに挿入する array_push

普通に$array[] =とした方がいい。関数を使うとその分のオーバーヘッドが必要になる。

 

 

 

四則演算

除算

剰余(割り算のあまり)

累乗計算

どちらでもOK

単項演算子

加算代入(足しこみ)

 

文字列と数字数値の判定

数字かどうかを判定する is_numeric

型が文字列であっても数値に変換できるものは数値として判定される面倒な仕様

整数値かどうかを判定する is_int

’99’などの文字列はfalseになってしまう。型として文字のものは文字として認識されるので良い仕様。

文字列かどうかを判定する ctype_digit

’99’は文字と認識されtrueになる。型として文字なものは文字として認識するので良い仕様。

 

 

変数と定数

変数を定義

変数名の前に$をつけること。

定数を定義 const

定数は$を付けてはいけない。慣習的に定数名は大文字で書くこと。

定数を定義 define

constとの違いはdefineは関数なので、引数には関数でもOK。

変数のデータを消去

変数の形を調べる

 

関数

 

関数を作る

同じ処理を繰り返す場合は関数としてまとめる。

 

関数に引数を渡す

関数を呼び出すときに値を渡す。

関数を定義しているときの引数は仮置きしているので仮引数、実際に関数を呼び出すときに渡す引数は実引数という。

引数を渡さなかった場合のデフォルト値を定義する場合は$ad = ‘値’とする。

 

returnで値を返す関数

関数内でreturnと書けばその時点で値が戻されて、それ以降の処理は無視される。

関数内にechoで値を吐き出すだけよりも、値を返す方が利用価値はあがる。

デフォルト値を= 0で定義すると引数の数を減らすこともできる。

 

関数の外で定義された変数を関数内で使いたい global

PHPでは関数の外で定義された変数は、関数の中で使うことはできない。使うときはglobalを使う。

 

但し上記の処理は見にくくなるので、変数の値を引数として渡すか、関数内で使う変数は関数内で定義する方がいい。

グローバルスコープ、ローカルスコープ、同じ変数であっても定義は別。

 

無名関数

関数自体を値として使ったり、関数自体を別の関数の引数として使うことができるので便利。

 

関数の引数の型付け

関数に使う引数に型を指定することもできる。

ただし、PHPは数字に見える文字は自動で型変換されてしまう。型変換されたくない場合はstrict_typeを指定する。

nullになる可能性がある場合は型の前に?をつけること

 

可変長引数

与えた引数を加算する関数として$a, $b, $cなどを引数にしても引数の数は合わせないとエラーにある。

そういう場合に引数に…とすると可変長にすることができる。

 

配列を返す関数(複数の戻り値)

 

 

 条件文

条件式if

==は型無視、===は型も判定

条件式 elseif

elseifは何度でも重ねられる。{}の閉じ忘れに注意。「else if」でも「elseif」でもどちらでもいい。

等しくない(型無視)

等しくない場合は、!=(型無視)、!==(型も含む)。<>は使わない。

Switch文

いわゆるselect文。上から順に比較する。各比較にbreakを付けること。

breakがあればそこでswitch文を抜けるが、breakがなければ引き続き次のcase比較をし続けてしまう。

case文を2つ書けばor条件のように判定してくれる。

比較演算子

比較演算子の基本。

 

値の評価

以下の場合はfalse判定、それ以外はtrueとなる。$x = 3をIF文の条件式に入れればTrue判定になる。

 

論理演算子

andやorで真偽値を取る演算子。

 

条件演算子

0未満の場合は0、それ以外はそのまま表示する。ifを使えば5行必要だが条件演算子を使えば1行で済む。

読みにくいので仕組みを理解しておく程度。

 

 

 

ループ文

for文

ループする回数が決まっている場合はfor文を使う

カウンターは慣習的に$iを使うことが多い。

 

while文

ある条件が満たされている間、特定の処理を行う。

最初から条件が満たされていない場合は何も処理しない。

 

do while文

とりあえず一度は処理を実行させたい場合

 

ループの中で処理をスキップする continue

continueを使って処理を飛ばす。

 

ループを抜ける break

continueは読み飛ばしだが、完全にループ自体を抜けるときに使う。

 

 

 

 

与えられた整数回数足しこむ

n個の文字列を出力する

与えられた文字数からカウントダウン

ファイルから配列へ

while文のエレガントな書き方

while文の書き方

whileで指定した条件に合致したら継続してループし、外れたら抜ける。

do-whileの書き方

最初一回は必ず実行したいときはdo-whileを使う。

whileで指定した条件に合致したら継続してループし、外れたら抜ける。

 

foreachで配列の値を全て取り出す 配列read

元の配列が$arrayでasの右に値となる変数。

foreachで連想配列の値を取り出す

 

readして連想配列をchainしてoutput

連想配列から条件を指定したり並び替えて連送配列へ

 

 

配列

配列とは

・変数の中に別の変数をつくる仕組み。
・中の変数の1つ1つを要素という。3つあれば3つの要素。
・要素にはそれぞれ異なる名前のキーが必要。文字か整数。
・要素に代入されたデータを値という。
・キーが文字列の配列を連想配列という。キーが数字の配列を単に配列という。
・変数=配列。変数名=配列名となる。

配列の初期化

作り方① ひとつづつ順番に値を代入していく

注意

変数というのは代入されて初めて定義され型を持つ。

 

②ひとつづつキー名を指定して要素を作る

 

③カギカッコで代入

 

④array関数を使う方法(インデックス配列の場合)

 

⑤array関数を使う場合(連想配列の場合)

⑥explodeで分割して放り込む

カンマやスペースで文字列を分割するとき。
第一引数に区切り文字、第二引数に文字列。結果は配列に。

さらに追加したい場合は

とすればいい。

配列の中身をすべてわかりやすく表示する

print_rのほうが見やすいけど、var_dumpのほうが型も表示してくれる。

 

配列に配列の値を追加する

…をつける。つけなければ途中2次元配列になり、2つ目の要素が配列の20,15になる。

 

要素の削除

配列の要素数のカウント

空行あった場合の配列に入れる処理
改行コードを最初に取るとwhile文の判定で止まってしまう。

配列を使ったランダムくじびき

N数分、配列を準備する。(席数確保例)

配列の並び替え

配列の並び替え(降順)

配列の数値を全て足す(加算)

$array = [5,4,3,2,1];
echo array_sum($array); //15

 

連想配列

値にアクセスするためのキーを数値のインデックスではなく文字や数字にすることができる。

連想配列を使用する場合は「=>」を使う。

カギカッコを使う

 

array関数を使う

 

連想配列に追加

 

連想配列の書き換え

 

連想配列の削除

 

連想配列を値で並び替え(昇順) asort

 

連想配列を値で並び替え(降順) arsort

 

連想配列をキーで並び替え(昇順) ksort

 

連想配列をキーで並び替え(降順) krsort

 

複数行を連想配列に入れるやり方

 

 

二次元配列

2次元配列

出現回数をカウントする

 

二次元配列の値を取り出す

 

 

日付

date関数

例 2015年4月1日午後4時3分9秒なら

日付の計算

標準時間の設定

 

 

便利関数

ディレクトリ情報を取得 dirnama

Laravelのコントローラで動かした場合

 

 

その他

標準入力からの取得

スポンサーリンク




スポンサーリンク




-IT関連
-, ,

執筆者:


comment

Your email address will not be published. Required fields are marked *

関連記事

YouTube補足資料 パソコン教室vol.1 まず最初に

今回の記事はYouTube動画の補足資料になります。   YouTubeでパソコン教室をやっています。よろしければ。   以下動画内で使用した内容です。   いまさらパソ …

AS400/IBMi View(ビュー)を作成したり削除したり一覧表示する

素人の備忘録なので、あまりよく解っていませんが、ビューの作り方です。 なんでViewを作る必要があるのかすら不明です。知ってる人は逆にコメント欲しいです。   思っていることは、論理ファイル …

AS400/IBMi シフト文字を含めてバイト数を計算する

AS400いわゆるIBMiには、シフト文字という意味不明な文字がある。 普通「アイウエオ」なら10バイトのはずだが、AS400では、12バイトになる。これは先頭と最後が2バイト文字の場合は、前後にそれ …

Windows Defender があれば市販のセキュリティソフトはいらないらしい

今回はパソコンのセキュリティソフトについての話です。これまた自己責任でお願いします。 しかもこれは聞いた話を記事にしているだけなので、真偽は確認しておりません。   私のいる会社 私のいる会 …

AS400/IBMi DB2 SQL 文字を数値に変換して小数で表示する

自分の備忘録です。 間違えがあったらご容赦ください。 その場合はご指摘いただければ大変助かります。   文字列型のフィールドの中に無理やり数字を入れているケース、というか数字だと自分に言い聞 …

Adsense広告




文字で検索

人気記事

なぜだか人気記事

読んでほしい順に