【#2】ChatGPTをフルに使ってPHPを学ぶ 〜基本的な構文理解編①〜

Created: 2025/04/29

前回の記事の続きですー

この記事では、phpの基本的な構文を確認していきます。
前回のチャットログがなくなったので、前回の記事を一回読ませて進めていきます!

画像
記事読んで、内容を要約感想を添えてくれました。
次に、phpの基本的な構文を学びたいと伝えました。

画像
こんな感じで、効率的に教えてくれる😁

  • phpのソースファイルでは、<?php ... ?>がc言語でいうint main(){}みたいな感じ?
  • 変数には$を必ずつける?型の指定はしなくていい?
  • 関数の定義や構文は最新のもの?

上記の質問をしてみた。

phpのソースファイルでは、<?php ... ?>がc言語でいうint main(){}みたいな感じ?

画像
なるほど、<?php...?>で、ここがphpのコードであること示しているだけか。

変数には$を必ずつける?型の指定はしなくていい?

画像
スクリプト言語なので、動的に型を付けてくれる。そして、明示的に型を宣言することもできる。

関数の定義や構文は最新のもの?

画像
アロー関数もあるみたいですね、僕が苦手なやつ...
一応、公式のリファレンスさーっとみた感じ大丈夫そうです。

チャッチーに問題を出してもらう

次はチャッチーに問題を出してもらって構文を学習。
学習のステップは以下の通りです。

  1. チャッチーに問題を列挙してもらう
  2. 自分で問題を解く
  3. 解いたコードをプロンプトとしてチャッチーに投げ、フィードバックをもらう

こんなステップで学習を進めていいきます!

【1】変数とデータ型

画像
自分の回答

php
1
2
3
4
5
6
7
8
<?php
  //【1】変数とデータ型
  $name = "IWAMON";
  $age = 20;
  $student = true;

  echo "名前:" . $name . "\n年齢:{$age}\n学生:" . $student . "<br>";
?>

チャッチーのフィードバック
画像
\nを変えるの忘れてた...
確かに、三項演算子の方がいいな

【2】文字列操作

画像
自分の回答

php
1
2
3
4
5
<?php
  //【2】文字列操作
  echo "こんにちは、{$name}さん!\n" . "<br>";
  echo "あなたは{$age}歳です。\n" . "<br>";
?>

チャッチーのフィードバック
特になし
コードは一つのファイルで書いているので、変数は使い回しですね

【3】配列と連想配列

画像
自分の回答

php
1
2
3
4
5
6
7
8
9
10
11
12
<?php
  //【3】配列と連想配列
  $furits = array("ブドウ", "リンゴ", "バナナ");

  foreach ($furits as $fruit) {
    echo "果物: {$fruit}\n";
  }
  echo "<br>";

  $myinfo = ["name" => "IWAMON", "age" => 20, "job" => "学生"];
  echo "名前:" . $myinfo["name"] . " 年齢:" . $myinfo['age'] . " 職業:" . $myinfo["job"] . "<br>";
?>

チャッチーのフィードバック
画像
typoだけですね。

【4】条件分岐

画像
自分の回答

php
1
2
3
4
5
6
7
8
9
10
11
12
<?php
  // 【4】条件分岐
  if ($age >= 20) {
    echo "大人です<br>";
  }
  elseif ($age >= 13) {
    echo "中高生です<br>";
  }
  else {
    echo "子供です<br>";
  }
?>

チャッチーのフィードバック
特になし

【5】繰り返し(for文、foreach文)

画像
自分の回答

php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php 
  // 【5】繰り返し(for文、foreach文)
  for ($i=1; $i <= 10; $i++) {
    echo $i;
  }

  echo "<br>";

  foreach ($furits as $fruit) {
    echo "果物: {$fruit}\n";
  }

  echo "<br>";
?>

チャッチーのフィードバック
さっきのtypoの部分と同じですね。

【6】関数

画像
自分の回答

php
1
2
3
4
5
6
7
8
9
<?php 
  // 【6】関数
  function tasizann($x, $y) {
    $res = $x + $y;
    return $res;
  }

  echo tasizann( 3, 7) . "<br>";
?>

チャッチーのフィードバック
特になし

【7】スーパーグローバル変数($_GET)

【8】エラー防止(isset)

画像

画像
自分の回答

php
1
2
3
4
5
6
7
8
9
<?php 
  // 【7】スーパーグローバル変数($_GET)
  // 【8】エラー防止(isset)
  if (isset($_GET['getname'])) {
    echo "こんにちは、" . $_GET['getname'] . "さん! <br>";
  } else {
    echo "名前が指定されていません<br>";
  }
?>

チャッチーのフィードバック
特になし

【9】include

画像
自分の回答

header.php
1
2
3
<?php 
  echo "これはヘッダーです。<br>"
?>
practice.php
1
2
3
4
<?php 
  // 【9】include
  include "./header.php";
?>

チャッチーのフィードバック
画像
おっと...

【10】日付関数

画像
自分の回答

php
1
2
3
4
5
<?php 
  // 【10】日付関数
  $today = date("Y/m/d");
  echo $today . "<br";
?>

チャッチーのフィードバック
画像
あっ...

BONUS

画像
自分の回答

php
1
2
3
4
5
6
7
8
9
10
11
12
<?php 
// BONUS
for ($i= 1; $i <= 100; $i++) {
  if ($i%15 == 0) {
    echo "{$i}FizzBuzz<br>";
  } elseif ($i%5 == 0) {
    echo "{$i}Buzz<br>";
  } elseif ($i%3 == 0) {
    echo "{$i}Fizz<br>";
  }
}
?>

チャッチーのフィードバック
画像
忘れてた...
このforループですが、なぜか3Fizzだけ出力されませんでした。
画像
原因は、【10】日付関数関数のtypoです。日付の出力の部分でecho $today . "<br";>を忘れていました。そのため、ブラウザのディベロッパーツールを確認すると...
画像
こんな感じで、3Fizzがhtmlのタブとして変な扱いをしいました😂
実際の開発で、こんな感じのミスあったら沼りそうですね...(僕はこれで数分沼りましたw)
画像
修正!

チャッチーの総評

画像

画像
こんな感じでした!

次のアクション

画像
提案してくれました。
でも、ログインセクションとか後にして、クラスを先にやろうと思います!

まとめ

チャッチーだけでも、割と勉強できますね〜
チャッチーだけでは不安だと思う時は、公式のリファレンスを参照するようにしています!

また次回👋🏻