PHPで良く使う処理まとめ

hebishima.shogo

はい、hebiです。

PHPでよく使う処理をまとめました。

今後も追記していきます。

スポンサーリンク

配列操作

配列の操作をまとめました。

配列データ作成、配列件数取得、ループ処理

// 配列データ作成
$data = array(
    array(
        'key1' => 'aaa',
        'key2' => 'bbb',
    ),
    array(
        'key1' => 'あああ',
        'key2' => 'いいい',
    )
);

// 配列件数取得
$row_count = count($data);

// ループ処理
foreach ($data as $index => $row) {
	// value取得
	echo $row['key1'];
}
ポイント

配列に追加する場合は以下のように追加できます。

$newItem = array(
    'key1' => 'xyz',
    'key2' => '123',
);

$data[] = $newItem;

配列のマージ

配列どうしをマージして一つの配列にまとめることができます。

$list = array_merge($list1, $list2);

ファイル操作

ファイルパスやファイルの操作についてまとめました。

相対パスから絶対パスへ変換

BASEPATH../../tempのような相対パスを/var/www/html/my_codeigniter_project/tempのように絶対パスへ変換します。

$temp_path = realpath(BASEPATH . '../../temp');

ファイルやディレクトリのリストを取得

ファイルパス内にあるファイルやディレクトリの一覧を取得したい場合に利用します。
以下は.pdfのファイル一覧を取得しています。

$delete_pdfs = glob($temp_path . '/*.pdf');

ファイル存在判定

ファイルの存在判定を行います。存在する場合はtrue、存在しない場合falseで判定します。

if (is_file($file)) {
    // 存在する
}else{
    // 存在しない
}

ファイル削除

ファイルを削除します。

unlink($file);

ファイルパスとファイル名の結合

ファイルパスとファイル名を結合してフルパスにします。
$temp_path = ‘/var/www/html/my_codeigniter_project/temp’
$file_name = ‘test.pdf’;
⇒「/var/www/html/my_codeigniter_project/temp/test.pdf」のように正常なパスを生成できます。

$full_path = implode(DIRECTORY_SEPARATOR, array($temp_path, $file_name));

日時操作

現在日時取得

$date = date("Ymd H:i");

日追加

日を追加します。

date("Ymd H:i", strtotime("+1 day"));
// +n years(年)、+n months(月)、+n hours(時)、+n minutes(分)
ポイント
  • 年を追加:date(“Ymd H:i”, strtotime(“+1 years”));
  • 月を追加:date(“Ymd H:i”, strtotime(“+1 months”));
  • 時間を追加:date(“Ymd H:i”, strtotime(“+1 hours”));
  • 分を追加:date(“Ymd H:i”, strtotime(“+1 minutes”));

ソート

カスタムソート

複雑なデータをソートしたい場合はカスタムソート関数を作成してソート処理を行います。

例えば以下のような複雑なデータをソートしてみましょう。

$data = array(
    "001" => array(
        "A" => array(
            "ID" => 1,
            "Count" => 20
        ),
        "B" => array(
            "ID" => 1,
            "Count" => 120
        ),
        "C" => array(
            "ID" => 1,
            "Count" => 150
        )
    ),
    "002" => array(
        "A" => array(
            "ID" => 2,
            "Count" => 10
        ),
        "B" => array(
            "ID" => 2,
            "Count" => 9
        ),
        "C" => array(
            "ID" => 2,
            "Count" => 13
        )
    )
);

B基準でCountの昇順でソートしてみます。

$key = 'B';
$value= 'Count';

// ASC用のカスタムソート関数
$sortASC = function ($a, $b) use ($key ,$value) {
    $roundedA = round($a[$key ][$value]);
    $roundedB = round($b[$key ][$value]);

    return $roundedA - $roundedB;
};
// DESC用カスタムソート関数
$sortDESC = function ($a, $b) use ($key ,$value) {
    $roundedB = round($b[$key ][$value]);
    $roundedA = round($a[$key ][$value]);
    
    return $roundedB - $roundedA;
};

uasort($data, $sortASC);
// uasort($data, $sortDESC);
ポイント

実数の場合、うまくソートできない場合があるため、round関数を利用して四捨五入してます。

以下のようにB基準のCountでソートすることができました。

DESCも問題なく動作してますね。

最後に

今後もどんどん追記していきますので、PHPの実装に迷ったらこのページを参考にしてもらえると嬉しいです。

最後までお読みいただきありがとうございました(^^♪

スポンサーリンク
ABOUT ME
hebi
hebi
エンジニア
フルスタックエンジニアとして活躍中。
HTML5プロフェッショナル認定Level1、Level2所持者です。

未経験の方でも簡単にプログラミングを学べるようにと情報を発信しております。
記事URLをコピーしました