ある配列があり、foreachした際に、ある値になったらその値の次の要素を取得したい時の方法を紹介します。
foreachの中で対象の値の次のキーを参照する
//id5の次の値を取りたいが更新順でソートされているため、idでorderByができない(idでソートしたいわけではない)
$id = 5;
$news = News::orderBy('updated_at', 'desc')->get();
$next_page = [];
foreach ($news as $index => $value) {
if ($value->id === $id) {
if (isset($news[$index + 1])) {
$next_page = $news[$index + 1];
} else {
$next_page = null;
}
}
};
foreachの中で対象の値の前のキーを参照する
//id5の次の値を取りたいが更新順でソートされているため、idでorderByができない(idでソートしたいわけではない)
$id = 5;
$news = News::orderBy('updated_at', 'desc')->get();
$prev_page = [];
foreach ($news as $index => $value) {
if ($value->id === $id) {
if (isset($news[$index - 1])) {
$prev_page = $news[$index - 1];
} else {
$prev_page = null;
}
}
};