📔

PHP shift_arrayを使って配列の中身を比較して新しい配列を作る

2022/06/06に公開

はじめに

array_shiftの活用法のお話です。

array_shift()

引数に与えられた配列の先頭を取り出す。
取り出された配列の中身は、もちろん先頭の値がない配列になっている。

活用法

例えば、

$days = ["1/1","1/2", "1/3", "1/4", "1/5"]; // 日にちの配列
$special_days = ["1/3", "1/5"]; // 特別な日の配列
$special_day = array_shift($special_days); // 特別な日の配列を先頭から一つ取り出す

foreach ($days as $day) {
    $day_array = ['date' => $day];
    if ($day == $special_day) { // もし、日にちと、特別な日の配列が一緒であれば、special = true を追加する
	$day_array['special'] = true; // 

	$special_day = array_shift($special_days);
    }
    $days_array[] = $day_array;
};

print_r($days_array);

上記のように記述した場合、

出力結果

Array
(
    [0] => Array
        (
            [date] => 1/1
        )

    [1] => Array
        (
            [date] => 1/2
        )

    [2] => Array
        (
            [date] => 1/3
            [special] => 1
        )

    [3] => Array
        (
            [date] => 1/4
        )

    [4] => Array
        (
            [date] => 1/5
            [special] => 1
        )

)

このように、日にちの配列を保持したまま、特別な日の配列を入れ込むことができる。
if文の中で、

$special_day = array_shift($special_days);

を行うことによって、special_daysの配列内から一つずつ取り出された値が$special_dayに入るため、繰り返し処理を行うことで、配列同士の比較が行えている状況。

さいごに

そもそもこれが最善かわかりかねるのですが、関数の使い方を理解することができるようになってきました。

Discussion