質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

Q&A

解決済

1回答

1776閲覧

日付をキーにした連想配列の作成

toll_tree

総合スコア199

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

0グッド

0クリップ

投稿2019/06/24 11:18

配列内に格納されているcarbonオブジェクトの日付文字列の一部が同じ、要素を取得する方法はありますでしょうか?
該当のコードは以下になります。

<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use Carbon\Carbon; use App\Reservation; class Reservecontroller extends Controller { // public function getCalendarDates($year, $month) { $date = Carbon::parse("$year-$month-1")->locale('ja_JP'); // dd($date); $last = $date->copy()->startOfWeek(); $count = $last->diffInDays($date->copy()->endOfMonth()->endOfWeek()) + 1; // dd($count,$date); for ($i = 0; $i < $count; $i++, $last->addDay()) { $dates[] = $last->copy(); } return $dates; } // public function reserve_date() { $current_date = new Carbon(); $current_year = $current_date->year; $current_month = $current_date->format('m'); $current_day = $current_date->format('d'); // dd($current_day); $dates = $this->getCalendarDates($current_year,$current_month); //予約された日付(全て) $reservations = Reservation::get(['reservation_date']); $reservations_array = $reservations->toArray(); // dd($reservations_array); foreach($reservations_array as $key=> $value ){ $reserved_date[] = Carbon::parse($value['reservation_date']); // dd($reserved_date); if($reserved_date[$key]->month == $current_month){ var_dump($reserved_date[$key]); //今月の予約された時間帯 $current_reserved_date[] = $reserved_date[$key]; } } dd(); dd($current_reserved_date); $time = Carbon::createFromTime(10); // dd($current_reserved_date); for($i =0; $i < 17; $i++){ // dd($time); // var_dump($time); if(!$time->between(Carbon::createFromTime(12,00,0),Carbon::createFromTime(13,30,0))){ // var_dump($time); $available_time_zone[] = $time->copy(); } $time = $time->addMinutes(30); } // dd($current_reserved_date[0]->format('H:i'),$available_time_zone[6]->format('H:i')); // if($available_time_zone[6]->format('H:i') == $current_reserved_date[0]->format('H:i')){ // echo __LINE__; // dd(); // }; $reserved_count = 0; // dd($available_time_zone); foreach($available_time_zone as $reserved_day){ foreach($current_reserved_date as $current_day){ if($reserved_day->format('Y:m:d H:i') == $current_day->format('Y:m:d H:i')){ // var_dump($reserved_day); $reserved_count+=1; } } } dd($reserved_count); // dd($available_time_zone); // $am_nine = Carbon::parse($current_year . $current_month . $current_day . $a ); // // $am_nine = Carbon::parse($current_year . $current_month . $current_day . '1030'); // dd($am_nine); return view('reserve.calendar',compact('dates','current_date','current_reserved_date','reserved_count')); } }

上記コードにおきまして、reserve_dateメソッド内の

foreach($reservations_array as $key=> $value ){

こちらのループの後の$current_reserved_dateの実行結果は以下の通りです。
イメージ説明
こちらの$current_reserved_dateメソッド内の日付部分「2019-6-24」が一致する要素を取得し、一致した要素を日付(「2019-6-24」)をキー名として、まとめる配列を作成したと考えています。
どなたかご助言頂ける方いらっしゃいましたらよろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2019/06/24 22:04 編集

前の質問の回答を読めば分かることです。読んでないから分からないんです。Carbonの問題でもLaravelの問題でもなくPHPの配列の基礎です。 もっと簡単なミニマムコードで試さないと身に付きません。
m.ts10806

2019/06/24 22:18 編集

それにその質問でベストアンサーに選んだ回答にも書いてありますね。その回答をした回答者に何もコメントをしてません。その場できちんと聞けばその場で解決できたことです。わざわざこんな長々と質問をする必要はなかったはずです。 私の回答をベストアンサーに選びたくないがために他の回答をベストアンサーに選ぶ行為をやめてください。回答してくれた人に失礼です。 エンジニア舐めないでください。あなたの駒ではありません。駒としたいならそれなりの対価を払ってやってもらうところに頼んでください。 それにサポートセンターでもありません。自己解決能力を育てる気がない人が使うものではありません。
guest

回答1

0

ベストアンサー

下記のように一度formatを使用して日付を取得して、その値をもとに連想配列に入れれば日付を元にグループ化した組み合わせができると思いますよ。

php

1$grouped_reserved_dates = []; 2foreach ($current_reserved_date as $reserved_date) { 3 $date = $reserved_date->format('Y-m-d'); 4 $grouped_reserved_dates[$date][] = $reserved_date; 5} 6 7> array:1 [8 "2019-06-24" => array:11 [9 0 => Carbon @1561370400 {#188 ▼ 10 date: 2019-06-24 10:00:00.0 UTC (+00:00) 11 } 12 1 => Carbon @1561372200 {#192 ▶} 13 2 => Carbon @1561374000 {#193 ▶} 14 3 => Carbon @1561375800 {#194 ▶} 15 4 => Carbon @1561384800 {#195 ▶} 16 5 => Carbon @1561386600 {#196 ▶} 17 6 => Carbon @1561388400 {#197 ▶} 18 7 => Carbon @1561390200 {#198 ▶} 19 8 => Carbon @1561392000 {#199 ▶} 20 9 => Carbon @1561393800 {#200 ▶} 21 10 => Carbon @1561395600 {#201 ▶} 22 ] 23]

投稿2019/06/24 13:51

fumito_94

総合スコア679

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2019/06/24 22:35

この質問者については過去質問とPHPマニュアルをきちんと確認すれば解決できることを思い込みで別問題だとして質問を立て続けているだけなので、積極回答は避けた方がいいかもしれません。 ある程度見てきた感じ、回答やアドバイスを活かす気はなさそうですしPHPマニュアルもほぼ確認していない(または流し読みで雑な理解のみ)ので。 ベストアンサーにした回答になにもコメントしないことが増えてきていますが、私の回答を単に避けたいだけのようです。
toll_tree

2019/06/25 00:41

@fumito_94さん ご回答ありがとうございました。 解決することができました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問