PDO::FETCH_ASSOC とすると該当するキーはプロパティではないため $todo->is_done などの使い方ができないのですか?

はい、そのとおりです。
2021年12月27日
ユーザー

大変、お世話になります。

PDO::FETCH_BOTHPDO::FETCH_ASSOC に違いについては、理解をしています。

そして、PDO::FETCH_ASSOCPDO::FETCH_OBJの違いについては、PDO::FETCH_ASSOCはカラム名をキーとする配列を返し、PDO::FETCH_OBJはカラム名に対応するプロパティを有したオブジェクトを返す、という感じだと思います。(← この部分があやふやで、きっちり理解できていません。)

今回のレッスンでは、なぜ、PDO::FETCH_ASSOCではなくPDO::FETCH_OBJを使っているのか(引き続きのレッスンで回答が見えてくると思うのですが)、現段階で理解したいと思っています。

そこで、オプションでPDO::FETCH_ASSOCを指定して、ver_dump()で確認した所、下記の通りの比較になりました。

  • PDO::FETCH_OBJ の場合
[0]=> object(stdClass)#3 (3) { ["id"]=> int(10) ["is_done"]=> int(0) ["title"]=> string(3) "fff" }
  • PDO::FETCH_ASSOC の場合
[0]=> array(3) { ["id"]=> int(10) ["is_done"]=> int(0) ["title"]=> string(3) "fff" } 

両方とも、カラム名をキーとして値がセットされており、違いはobject(stdClass)#3 (3)array(3)の部分だけです。

配列としてデータを取得するのと、オブジェクトで取得するのと、どう違うのでしょうか?

教えていただけましたら幸いです。

よろしくおねがいします。

この回答を見るにはプレミアムプランへの登録が必要です

プレミアムプランとは?

このレッスンの質問と回答(12)