📔
PHP shift_arrayを使って配列の中身を比較して新しい配列を作る
はじめに
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