痒いところに手が届く PHPの基本処理思い出しBOX

2022年8月5日金曜日

PHP

t f B! P L

PHPをしばらく触ってない人向けに、さっと流し読みで復習できる基本構文まとめ記事を作りました。

比較演算子

数値の比較

数値の比較では、他の言語と同様に == などの比較演算子で数値が比較できる。

0 == 0
1 != 0
1 >= 0
1 > 0
1 <= 0
1 < 0

文字列の比較

PHPでは、文字列の比較で == などの比較演算子を使用すると正しい結果が得られないため、strcmp 関数を用いて文字列は比較する。

strcmpは、2つの引数の文字列が一致する場合「0」、左辺の方が大きい場合「1」、右辺の方が大きい場合「-1」を返す。

strcmp("A", "A") // 0
strcmp("B", "A") // 1
strcmp("A", "B") // -1

定数

定数の宣言は次のとおり。

class MyClass
{
    const CONSTANT = 'constant value';

    function showConstant() {
        echo  self::CONSTANT . "\n";
    }
}

//別のクラスから定数を参照するときは、以下の書き方で参照できる
MyClass::CONSTANT

繰り返し

よく使う繰り返し処理。

foreach

foreach は配列の各要素を順に取り出し、繰り返しで処理を行う。

$list = ["A", "B", "C", "D"]
foreach ($list as $value){
    echo $value. "\n"
}

繰り返しのインデックス番号を取得する場合は、次のように書く。

$list = ["A", "B", "C", "D"]
foreach ($list as $index => $value) {
    echo "index={$index} value={$value}". "\n";
}

型変換(キャスト)

型変換は次の構文で書く

$a = (変換する型)$変換する値;

↓サンプルコード

$a = (int)"11";    // 文字列→数値
$a = (string)11;    // 数値→文字列

PHPでは、数値に変換できない文字列を int にキャストした場合、エラーにはならず「0 」が返る。

$a = (int)"a";
// $a = 0

文字列の切り取り

指定した位置から文字列を切り出す場合は、substr または mb_substr を使用する。

substr

substr はシングルバイト(半角文字)の文字列を切り取る時に使用し、構文は次のとおりである。

substr( 文字列, 開始位置(0) [, 文字数]);

使用例は次のとおり。

// 2文字目以降を切り取り
substr("abc", 1)
//=> "bc"


// 2文字目から1文字切り取り
substr("abc", 1, 1)
//=> "b"

※ 日本語などのマルチバイト文字に対して substr を使用すると結果がおかしなことになるので、その時はmb_substr を使うこと。

mb_substr

mb_substr 関数は日本語などのマルチバイトに対応した、文字列切り取り関数である。こちらを使えば半角・全角ともに正常に文字列を切り取るので基本はこっちを使う。

構文は substr と同じ。

mb_substr( 文字列, 開始位置(0) [, 文字数]);

使用例は次のとおり。

// 2文字目から2文字切り取り
mb_substr('やまのススメ', 1, 2);
//=> "まの"

// 半角文字もいける
mb_substr('abc', 1, 2);
//=> "bc"

// 開始位置にマイナス値を指定すると後ろから文字列を切り取れる
mb_substr('やまのススメ', -3);
//=> "ススメ"

数値判定

基本の数値判定。

整数のみのチェック

PHPには色々数値判定する方法が用意されているが、正規表現チェックの preg_match 関数を使うのが固い。

$value = "1";
preg_match("/^[0-9]+$/", $value);  // -> TRUE

$value = 1;
preg_match("/^[0-9]+$/", $value);  // -> TRUE

$value = "A";
preg_match("/^[0-9]+$/", $value);  // -> FALSE

小数を含む値のチェック

小数を含む数値のチェックの場合は、is_numeric 関数を使うのがよい。

$value = "1.9";
is_numeric($value);  // -> TRUE

$value = 1.9;
is_numeric($value);  // -> TRUE

$value = "A";
is_numeric($value);  // -> FALSE

日付・時間

$dt = new DateTime('now');


文字列分割、結合

区切り文字を指定して分割する「explode」

explode 関数は、引数で指定した区切り文字で文字列を分割した配列を取得する関数です。

$langs = explode(",", "PHP,JAVA,PYTHON");

//=> [
//     "PHP",
//     "JAVA",
//     "PYTHON",
//   

配列の中身を1つの文字列に結合する「join」

join メソッドは、配列内の要素を1つの文字列として連結するためのメソッドです。
1つ目の引数に区切り文字、2つ目の引数に連結する配列を指定します。

$array = ["山田", "鈴木", "佐藤"];
$str = join(",", $array);

//=> => "山田,鈴木,佐藤"

ラムダ式

ラムダ式は無名関数とも呼ばれ、array_map() のようなコールバックを必要とする関数に、function hoge() {} のような関数名を定義せずに、処理内容だけが書かれた内容をコールバックの引数に渡すことができるものである。

array_map(function($num) {
	return $num * 2; 
}, [1,2,3]);

// => [2, 4, 6]

アロー関数

アロー関数は、上で書いたラムダ式(無名関数)を、より簡潔に記述するべく PHP 7.4 で追加された構文である。アロー関数の構文は fn (引数) => 式 の形式で記述し、簡単な処理を1行の少ない記述で書けるのが特徴である。

上のラムダ式で書いたサンプルコードを、アロー関数で書き直すと次のようになる。

array_map(fn($num) => $num * 2, [1,2,3]);

// => [2, 4, 6]

配列

配列の初期化

空の配列を作成

$array = [];

初期値を指定して配列を作成。

$array = [1, 2, 3];

指定のサイズ、初期値で初期化する。

$array = array_fill(0, 3, 'A');
//=> ["A","A","A"]

1次元配列を連想配列に変換

array_fill_keys 関数は、1次元の配列の値を連想配列のキーにして、新しく配列を作る関数です。

1つ目の引数に連想配列にする配列、2つ目の引数に連想配列の値の初期値を指定します。

$array = array('PHP', 'Java', 'Python');
$result = array_fill_keys($array, 0);

//=> [
//     "PHP" => 0,
//     "Java" => 0,
//     "Python" => 0,
//   ]

スリープ

sleep 関数は、プログラムの実行を引数で指定した秒数、遅延させます。

sleep(スリープする秒数)

UUIDを取得

個人的によく使う UUIDの取得方法。

use Illuminate\Support\Str;

$uuid = Str::uuid();

- を取り除きたいなら、str_replace を使えばいい

$uuid = str_replace("-", "", (string) Str::uuid());
スポンサーリンク
スポンサーリンク

このブログを検索

Profile

自分の写真
Webアプリエンジニア。 日々新しい技術を追い求めてブログでアウトプットしています。
プロフィール画像は、猫村ゆゆこ様に書いてもらいました。

仕事募集もしていたり、していなかったり。

QooQ