初心者のためのfor forEach 構文の比較
〜PHP,Laravel ,Django,Express(Node.js)〜
簡単な処理でも使用する言語やフレームワークが異なると、ごっちゃになりますので、一旦ここで簡単な覚書としてメモします。
前提としてブログ投稿のような簡単なWebサイトを書いているとし、そのトップページで全件表示させ、投稿がない場合は"投稿がありません"と表示させたいとします。
Webアプリでの構文比較
PHP
(前提) pdoを使ってDatabaseにアクセス。そのときの設定値はPDO::ATTR_DEFAULT_FETCH_MODE => FETCH_OBJ です。
つまりDBデータをオブジェクトとして取得できるので、展開するときは"obj->プロパティ"のように矢印のような記号「->」でアクセスできます。
<? php if count($posts) != 0 : ?>
<?php foreach ($posts as $post) : ?>
<li><?= $post->title ?></li>
<?php endforeach; ?>
<?php else : ?>
<li>投稿がありません</li>
<? php endif; ?>
Laravel
@forelse ($posts as $post)
<li>{{$post->title}}</li>
@empty
<li>投稿がありません</li>
@endforelse
Django
Python、Javascriptでデータをアクセスするときは、"obj.プロパティ"のようにピリオド「.」でアクセスします。
{% for post in posts %}
<li>{{ post.title }}</li>
{% empty %}
<li>投稿がありません</li>
{% endfor %}
Express(Node.js)
<% if (posts.length) { %>
<% posts.forEach(post => { %>
<li><%= post.title %></li>
<% }) %>
<% } else{ %>
<li>投稿がありません</li>
<% } %>
以上です。単に並べただけですけど、その違いが確認できるかと思います。(・・;)