<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Code-ch</title>
	<atom:link href="https://code-ch.com/feed/" rel="self" type="application/rss+xml" />
	<link>https://code-ch.com</link>
	<description></description>
	<lastBuildDate>Thu, 27 Feb 2025 23:38:04 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	

<image>
	<url>https://code-ch.com/wp-content/uploads/2024/04/logo_code-ch-150x150.png</url>
	<title>Code-ch</title>
	<link>https://code-ch.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>PHPで作る！シンプルなTodoリスト &#8211; データベース連携編</title>
		<link>https://code-ch.com/php-project-todolist-with-db/</link>
					<comments>https://code-ch.com/php-project-todolist-with-db/#respond</comments>
		
		<dc:creator><![CDATA[TJR]]></dc:creator>
		<pubDate>Mon, 24 Feb 2025 09:55:11 +0000</pubDate>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[実践プロジェクト]]></category>
		<category><![CDATA[初学者向け]]></category>
		<guid isPermaLink="false">https://code-ch.com/?p=713</guid>

					<description><![CDATA[前回の記事では、セッションでの一時的なデータ保存を実装しました。今回は、実践的なデータベース管理へとステップアップしましょう。この記事では、PHPとMySQLを使ってTodoリストを改良し、永続的にデータを保存できるよう [&#8230;]]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image size-large"><img fetchpriority="high" decoding="async" width="1024" height="576" src="https://code-ch.com/wp-content/uploads/2025/02/thumbnail_todo_db-1024x576.jpg" alt="" class="wp-image-714" srcset="https://code-ch.com/wp-content/uploads/2025/02/thumbnail_todo_db-1024x576.jpg 1024w, https://code-ch.com/wp-content/uploads/2025/02/thumbnail_todo_db-300x169.jpg 300w, https://code-ch.com/wp-content/uploads/2025/02/thumbnail_todo_db-768x432.jpg 768w, https://code-ch.com/wp-content/uploads/2025/02/thumbnail_todo_db-1536x864.jpg 1536w, https://code-ch.com/wp-content/uploads/2025/02/thumbnail_todo_db-120x68.jpg 120w, https://code-ch.com/wp-content/uploads/2025/02/thumbnail_todo_db-160x90.jpg 160w, https://code-ch.com/wp-content/uploads/2025/02/thumbnail_todo_db-320x180.jpg 320w, https://code-ch.com/wp-content/uploads/2025/02/thumbnail_todo_db.jpg 1920w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>前回の記事では、セッションでの一時的なデータ保存を実装しました。今回は、実践的なデータベース管理へとステップアップしましょう。この記事では、PHPとMySQLを使ってTodoリストを改良し、永続的にデータを保存できるようにします。</p>



<div class="wp-block-cocoon-blocks-tab-caption-box-1 tab-caption-box block-box has-background has-border-color has-cocoon-white-background-color has-blue-border-color not-nested-style cocoon-block-tab-caption-box" style="--cocoon-custom-background-color:#ffffff;--cocoon-custom-border-color:#0095d9"><div class="tab-caption-box-label block-box-label box-label"><span class="tab-caption-box-label-text block-box-label-text box-label-text">前回の記事はこちら</span></div><div class="tab-caption-box-content block-box-content box-content">
<div class="wp-block-cocoon-blocks-blogcard blogcard-type bct-none">

<a href="https://code-ch.com/php-project-todolist/" title="PHPで作る！シンプルなTodoリスト入門" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img decoding="async" width="160" height="90" src="https://code-ch.com/wp-content/uploads/2025/01/thumbnail_try-todo-2-160x90.jpg" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://code-ch.com/wp-content/uploads/2025/01/thumbnail_try-todo-2-160x90.jpg 160w, https://code-ch.com/wp-content/uploads/2025/01/thumbnail_try-todo-2-300x169.jpg 300w, https://code-ch.com/wp-content/uploads/2025/01/thumbnail_try-todo-2-768x432.jpg 768w, https://code-ch.com/wp-content/uploads/2025/01/thumbnail_try-todo-2-120x68.jpg 120w, https://code-ch.com/wp-content/uploads/2025/01/thumbnail_try-todo-2-320x180.jpg 320w, https://code-ch.com/wp-content/uploads/2025/01/thumbnail_try-todo-2.jpg 1024w" sizes="(max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">PHPで作る！シンプルなTodoリスト入門</div><div class="blogcard-snippet internal-blogcard-snippet">PHPの基本機能を使ってTodoリストを作成します。セッション管理、フォーム処理、配列操作など、Web開発の基礎が学べる実践的なプロジェクトです。</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img decoding="async" src="https://www.google.com/s2/favicons?domain=https://code-ch.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">code-ch.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2025.02.02</div></div></div></div></a>
</div>
</div></div>



<div class="wp-block-cocoon-blocks-tab-caption-box-1 tab-caption-box block-box has-background has-border-color has-cocoon-white-background-color has-blue-border-color not-nested-style cocoon-block-tab-caption-box" style="--cocoon-custom-background-color:#ffffff;--cocoon-custom-border-color:#0095d9"><div class="tab-caption-box-label block-box-label box-label"><span class="tab-caption-box-label-text block-box-label-text box-label-text">XAMPPの導入がまだの方はこちら</span></div><div class="tab-caption-box-content block-box-content box-content">
<div class="wp-block-cocoon-blocks-blogcard blogcard-type bct-none">

<a href="https://code-ch.com/php-xampp-install/" title="【PHP】環境構築（Windows11）" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img loading="lazy" decoding="async" width="160" height="90" src="https://code-ch.com/wp-content/uploads/2024/09/thumbnail-php-xampp-160x90.jpg" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://code-ch.com/wp-content/uploads/2024/09/thumbnail-php-xampp-160x90.jpg 160w, https://code-ch.com/wp-content/uploads/2024/09/thumbnail-php-xampp-300x169.jpg 300w, https://code-ch.com/wp-content/uploads/2024/09/thumbnail-php-xampp-1024x576.jpg 1024w, https://code-ch.com/wp-content/uploads/2024/09/thumbnail-php-xampp-768x432.jpg 768w, https://code-ch.com/wp-content/uploads/2024/09/thumbnail-php-xampp-1536x864.jpg 1536w, https://code-ch.com/wp-content/uploads/2024/09/thumbnail-php-xampp-120x68.jpg 120w, https://code-ch.com/wp-content/uploads/2024/09/thumbnail-php-xampp-320x180.jpg 320w, https://code-ch.com/wp-content/uploads/2024/09/thumbnail-php-xampp.jpg 1920w" sizes="(max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">【PHP】環境構築（Windows11）</div><div class="blogcard-snippet internal-blogcard-snippet">PHPの実行環境を構築する手順を分かりやすく解説。XAMPPを使ったローカル環境で、PHPスクリプトを実行します。</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img decoding="async" src="https://www.google.com/s2/favicons?domain=https://code-ch.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">code-ch.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2024.09.16</div></div></div></div></a>
</div>
</div></div>



<h2 class="wp-block-heading">データベースの作成</h2>



<p>まずXAMPP Control Panelを開き、ApacheとMySQLをStartします。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="665" src="https://code-ch.com/wp-content/uploads/2025/02/php-todo-1-1024x665.png" alt="" class="wp-image-734" srcset="https://code-ch.com/wp-content/uploads/2025/02/php-todo-1-1024x665.png 1024w, https://code-ch.com/wp-content/uploads/2025/02/php-todo-1-300x195.png 300w, https://code-ch.com/wp-content/uploads/2025/02/php-todo-1-768x499.png 768w, https://code-ch.com/wp-content/uploads/2025/02/php-todo-1.png 1336w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>次にMySQLの行にあるAdminをクリックします。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="665" src="https://code-ch.com/wp-content/uploads/2025/02/php-todo-2-1024x665.png" alt="" class="wp-image-735" srcset="https://code-ch.com/wp-content/uploads/2025/02/php-todo-2-1024x665.png 1024w, https://code-ch.com/wp-content/uploads/2025/02/php-todo-2-300x195.png 300w, https://code-ch.com/wp-content/uploads/2025/02/php-todo-2-768x499.png 768w, https://code-ch.com/wp-content/uploads/2025/02/php-todo-2.png 1336w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>するとブラウザでphpmyadminが開きます。</p>



<div class="wp-block-cocoon-blocks-tab-caption-box-1 tab-caption-box block-box has-border-color has-orange-border-color not-nested-style cocoon-block-tab-caption-box" style="--cocoon-custom-border-color:#f39800"><div class="tab-caption-box-label block-box-label box-label fab-question-circle"><span class="tab-caption-box-label-text block-box-label-text box-label-text">phpmyadminとは</span></div><div class="tab-caption-box-content block-box-content box-content">
<p>phpMyAdminはMySQLをブラウザ上で簡単に扱えるツールです。データベースやテーブルの編集をGUI（マウスでの操作）で行うことができます。</p>
</div></div>



<p>サイドバーの「新規作成」からデータベースを作成します。今回はtodo_dbという名前にします。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="210" src="https://code-ch.com/wp-content/uploads/2025/02/image-1024x210.png" alt="" class="wp-image-736" srcset="https://code-ch.com/wp-content/uploads/2025/02/image-1024x210.png 1024w, https://code-ch.com/wp-content/uploads/2025/02/image-300x61.png 300w, https://code-ch.com/wp-content/uploads/2025/02/image-768x157.png 768w, https://code-ch.com/wp-content/uploads/2025/02/image.png 1245w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<h2 class="wp-block-heading">テーブルの作成</h2>



<p>データベースを作成したら次にテーブルを作成するのですが、その前にTodoを構成するデータを洗い出していきます。</p>



<div class="wp-block-cocoon-blocks-iconlist-box iconlist-box blank-box list-caret-right block-box"><div class="iconlist-title">Todoを構成する要素、およびデータの形式</div>
<ul class="wp-block-list">
<li>id &#8211; 文字列</li>



<li>text &#8211; 文字列</li>



<li>作成日時 &#8211; 日時</li>
</ul>
</div>



<p>テーブル名は「todos」、カラム数は3（id・Todo・作成日時）です。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="263" src="https://code-ch.com/wp-content/uploads/2025/02/image-1-1024x263.png" alt="" class="wp-image-737" srcset="https://code-ch.com/wp-content/uploads/2025/02/image-1-1024x263.png 1024w, https://code-ch.com/wp-content/uploads/2025/02/image-1-300x77.png 300w, https://code-ch.com/wp-content/uploads/2025/02/image-1-768x197.png 768w, https://code-ch.com/wp-content/uploads/2025/02/image-1.png 1086w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>テーブルを作成すると、カラムの詳細を設定する画面に移ります。下記画像のように変更していきます。<span class="marker-blue">（<span class="cocoon-custom-text-1">色のついている</span>箇所です）</span></p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="233" src="https://code-ch.com/wp-content/uploads/2025/02/image-7-1024x233.png" alt="" class="wp-image-749" srcset="https://code-ch.com/wp-content/uploads/2025/02/image-7-1024x233.png 1024w, https://code-ch.com/wp-content/uploads/2025/02/image-7-300x68.png 300w, https://code-ch.com/wp-content/uploads/2025/02/image-7-768x174.png 768w, https://code-ch.com/wp-content/uploads/2025/02/image-7-1536x349.png 1536w, https://code-ch.com/wp-content/uploads/2025/02/image-7-2048x465.png 2048w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<div class="wp-block-cocoon-blocks-iconlist-box iconlist-box blank-box list-caret-right block-box"><div class="iconlist-title">Todoを構成する要素、およびMySQLでのデータ型</div>
<ul class="wp-block-list">
<li>id &#8211; VARCHAR(13)
<ul class="wp-block-list">
<li>文字列を格納できます</li>



<li>カッコ内の数字は最大文字数を表します</li>



<li>IDなどの文字列型の識別子によく使用されます</li>
</ul>
</li>



<li>text &#8211; TEXT
<ul class="wp-block-list">
<li>長い文字列データを格納できます</li>



<li>メモや説明文など、長さが決まっていない文字列データに向いています</li>
</ul>
</li>



<li>created_at &#8211; DATETIME
<ul class="wp-block-list">
<li>日付と時刻を格納できます</li>



<li>&#8216;YYYY-MM-DD HH:MM:SS&#8217; の形式で保存されます</li>



<li>current_timestampをデフォルト値とすることで、レコード作成時の時刻が自動的に設定されます</li>



<li>タイムスタンプとして使用され、データの作成・更新時刻の管理に適しています</li>
</ul>
</li>
</ul>
</div>



<p>上記入力後、「保存する」を押すとテーブルが完成します。これでデータを保存できるようになりました！</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="246" src="https://code-ch.com/wp-content/uploads/2025/02/image-8-1024x246.png" alt="" class="wp-image-750" srcset="https://code-ch.com/wp-content/uploads/2025/02/image-8-1024x246.png 1024w, https://code-ch.com/wp-content/uploads/2025/02/image-8-300x72.png 300w, https://code-ch.com/wp-content/uploads/2025/02/image-8-768x185.png 768w, https://code-ch.com/wp-content/uploads/2025/02/image-8-1536x369.png 1536w, https://code-ch.com/wp-content/uploads/2025/02/image-8.png 1748w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<h2 class="wp-block-heading">php側の処理</h2>



<p>phpのコーディングに移ります。config.phpを新たに作成して、データベースに関する処理を記述していきます。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-file="config.php" data-lang="PHP"><code>&lt;?php
define(&#39;DB_HOST&#39;, &#39;localhost&#39;);
define(&#39;DB_NAME&#39;, &#39;todo_db&#39;);
define(&#39;DB_USER&#39;, &#39;root&#39;);
define(&#39;DB_PASS&#39;, &#39;&#39;);

try {
    $pdo = new PDO(
        &quot;mysql:host=&quot; . DB_HOST . &quot;;dbname=&quot; . DB_NAME,
        DB_USER,
        DB_PASS
    );
} catch (PDOException $e) {
    exit(&#39;データベース接続に失敗しました。&#39; . $e-&gt;getMessage());
}</code></pre></div>



<h3 class="wp-block-heading">定数の定義</h3>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP"><code>define(&#39;DB_HOST&#39;, &#39;localhost&#39;);
define(&#39;DB_NAME&#39;, &#39;todo_db&#39;);
define(&#39;DB_USER&#39;, &#39;root&#39;);
define(&#39;DB_PASS&#39;, &#39;&#39;);</code></pre></div>



<p>まずdefine構文で定数を宣言しています。</p>



<div class="wp-block-cocoon-blocks-tab-caption-box-1 tab-caption-box block-box not-nested-style cocoon-block-tab-caption-box"><div class="tab-caption-box-label block-box-label box-label fab-graduation-cap"><span class="tab-caption-box-label-text block-box-label-text box-label-text">Manual &#8211; define関数</span></div><div class="tab-caption-box-content block-box-content box-content">
<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP"><code>define(定数名, 値);</code></pre></div>



<p>指定した名前で定数を作成します。定数は変更できず、内容が変化しないことが保証される名前が必要なときに使用されます。</p>
</div></div>



<p>上から順に、ホスト名、データベース名、ユーザー名、パスワードと定義しています。</p>



<h3 class="wp-block-heading">データベースとの接続</h3>



<p>次のtry節ではデータベースと接続しています。PDOというオブジェクトを使うことで、DBとの接続をシンプルに行えます。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP"><code>try {
    $pdo = new PDO(
        &quot;mysql:host=&quot; . DB_HOST . &quot;;dbname=&quot; . DB_NAME . &quot;;charset=utf8mb4&quot;,
        DB_USER,
        DB_PASS
    );
} catch (PDOException $e) {
    exit(&#39;データベース接続に失敗しました。&#39; . $e-&gt;getMessage());
}</code></pre></div>



<div class="wp-block-cocoon-blocks-tab-caption-box-1 tab-caption-box block-box not-nested-style cocoon-block-tab-caption-box"><div class="tab-caption-box-label block-box-label box-label fab-graduation-cap"><span class="tab-caption-box-label-text block-box-label-text box-label-text">Manual &#8211; PDO</span></div><div class="tab-caption-box-content block-box-content box-content">
<p>pdoはmysqlのほか、postgreSQLやSQLiteなどのデータベースと接続できます。データベースが何であるかにかかわらず、同じ関数を使用してクエリの発行やデータの取得が行えます。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP"><code>new PDO(dsn, ユーザー名, パスワード);</code></pre></div>



<p>dsn(Data Source Name)にはデータベースに接続するために必要な情報（データベースの種類、ホスト名、データベース名、文字セットなど）が記載されています。</p>



<p>今回使っているdsnは以下のようになります。<br>&#8220;mysql:host=localhost; dbname=todo_db; charset=utf8mb4&#8221;</p>



<ul class="wp-block-list">
<li>mysql: [データベース管理システム]</li>



<li>host=localhost [ホスト名]</li>



<li>dbname=todo_db [データベース名]</li>



<li>charset=utf8mb4 [文字セット]</li>
</ul>
</div></div>



<h3 class="wp-block-heading">フロントエンドとデータベースの連携</h3>



<p>先ほど見たconfig.phpファイルを読み込んで、データベースに接続します。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-file="index.php" data-lang="PHP"><code>&lt;?php
require_once &#39;config.php&#39;;

// Todo追加
function addTodo($text)
{
    global $pdo;
    $id = uniqid();
    $stmt = $pdo-&gt;prepare(&quot;INSERT INTO todos (id, text) VALUES (?, ?)&quot;);
    return $stmt-&gt;execute([$id, $text]);
}

// Todo一覧取得
function getTodos()
{
    global $pdo;
    $stmt = $pdo-&gt;query(&quot;SELECT * FROM todos ORDER BY created_at DESC&quot;);
    return $stmt-&gt;fetchAll(PDO::FETCH_ASSOC);
}

// Todo削除
function deleteTodo($id)
{
    global $pdo;
    $stmt = $pdo-&gt;prepare(&quot;DELETE FROM todos WHERE id = ?&quot;);
    return $stmt-&gt;execute([$id]);
}

// フォーム処理
if (isset($_POST[&#39;add&#39;]) && !empty($_POST[&#39;todo&#39;])) {
    addTodo($_POST[&#39;todo&#39;]);
}

if (isset($_POST[&#39;delete&#39;]) && !empty($_POST[&#39;id&#39;])) {
    deleteTodo($_POST[&#39;id&#39;]);
}

// Todo一覧取得
$todos = getTodos();
?&gt;

&lt;!DOCTYPE html&gt;
&lt;html&gt;

&lt;head&gt;
    &lt;title&gt;My Todo List&lt;/title&gt;
    &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1.0&quot;&gt;
    &lt;link rel=&quot;stylesheet&quot; href=&quot;style.css&quot;&gt;
&lt;/head&gt;

&lt;body&gt;
    &lt;div class=&quot;container&quot;&gt;
        &lt;h1&gt;My Todo List&lt;/h1&gt;

        &lt;form method=&quot;POST&quot; class=&quot;add-form&quot;&gt;
            &lt;input type=&quot;text&quot; name=&quot;todo&quot; placeholder=&quot;新しいタスクを入力&quot; required&gt;
            &lt;button type=&quot;submit&quot; name=&quot;add&quot;&gt;追加&lt;/button&gt;
        &lt;/form&gt;

        &lt;div class=&quot;todo-list&quot;&gt;
            &lt;?php foreach ($todos as $todo): ?&gt;
                &lt;div class=&quot;todo-item&quot;&gt;
                    &lt;div class=&quot;todo-content&quot;&gt;
                        &lt;div class=&quot;todo-text&quot;&gt;&lt;?php echo htmlspecialchars($todo[&#39;text&#39;]); ?&gt;&lt;/div&gt;
                    &lt;/div&gt;
                    &lt;form method=&quot;POST&quot; class=&quot;form-inline&quot;&gt;
                        &lt;input type=&quot;hidden&quot; name=&quot;id&quot; value=&quot;&lt;?php echo $todo[&#39;id&#39;]; ?&gt;&quot;&gt;
                        &lt;button type=&quot;submit&quot; name=&quot;delete&quot; class=&quot;delete-btn&quot;&gt;delete&lt;/button&gt;
                    &lt;/form&gt;
                &lt;/div&gt;
            &lt;?php endforeach; ?&gt;
        &lt;/div&gt;
    &lt;/div&gt;
&lt;/body&gt;

&lt;/html&gt;</code></pre></div>



<h4 class="wp-block-heading">Todo追加機能</h4>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>function addTodo($text)
{
    global $pdo;
    $id = uniqid();
    $stmt = $pdo-&gt;prepare(&quot;INSERT INTO todos (id, text) VALUES (?, ?)&quot;);
    return $stmt-&gt;execute([$id, $text]);
}</code></pre></div>



<p>この関数で新しいTodoをデータベースに追加します。<br>まず関数の中で外部の$pdo変数を使うために、global宣言をしています。</p>



<p class="has-small-font-size">（※今回はシンプルな解説にするためにglobalを使用しています。基本的には、管理が難しくなるためglobal宣言は避けた方が良いです。）</p>



<p>次に、PDOの<span class="marker-under">prepare関数</span>によってSQL文をセットしています。IDとTodoをINSERT文に安全に挿入するために、INSERT文の中には疑問符 (?) パラメータマークを使っています。最後のexecute関数に、疑問符パラメータの数と同じ要素数の配列を引数として渡します。配列の中身の順番と、疑問符パラメータの順番が一致するようにしましょう。</p>



<div class="wp-block-cocoon-blocks-tab-caption-box-1 tab-caption-box block-box not-nested-style cocoon-block-tab-caption-box"><div class="tab-caption-box-label block-box-label box-label fab-graduation-cap"><span class="tab-caption-box-label-text block-box-label-text box-label-text">Manual &#8211; prepare関数</span></div><div class="tab-caption-box-content block-box-content box-content">
<p>SQL文に変数を挿入するなら、そのまま結合なり展開なりしてしまえば楽なのでは？と思いますが、そうすると攻撃者が悪意のあるSQL文を挿入、実行できてしまいます。この攻撃をSQLインジェクションと言います。</p>



<p>SQL文をセットする際に変数を挿入したいときは、PDOのprepare関数を使います。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP"><code>$pdo-&gt;prepare(&quot;SQL文&quot;)</code></pre></div>



<p>prepare関数でSQL文をセットした後、execute関数により後から変数を代入しています。この一連の流れはプリペアドステートメントと呼ばれ、SQL文の中に安全に変数を挿入できます。このひと手間を怠るとセキュリティホールが生まれることがありますので、ユーザの入力値をSQL文に使用する場合は必ず行ってください。</p>
</div></div>



<h3 class="wp-block-heading"><strong>Todo一覧取得機能</strong></h3>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP"><code>function getTodos() {
    global $pdo;
    $stmt = $pdo-&gt;query(&quot;SELECT * FROM todos ORDER BY created_at DESC&quot;);
    return $stmt-&gt;fetchAll(PDO::FETCH_ASSOC);
}</code></pre></div>



<p>この関数でデータベースから全てのTodoを取得しています。<br>Todoの取得には変数を使用しないため、PDOのprepare関数ではなく<span class="marker-under">query関数</span>でSQL文をセットします。created_atの降順（新しい順）で並び替えしています。</p>



<p>最後に、$stmtのfetchAll関数によりTodoを全て取得して、returnしています。引数には、データの取得形式を指定します。<br>PDO::FETCH_ASSOCは、[カラム名1 => 値1, カラム名2 => 値2, &#8230;]のような連想配列でデータを取得します。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP"><code>$todos = getTodos();</code></pre></div>



<p>今回は$todos変数にTodoのリストを代入しています。</p>



<h3 class="wp-block-heading">フォーム処理部分</h3>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP"><code>if (isset($_POST[&#39;add&#39;]) && !empty($_POST[&#39;todo&#39;])) {
    addTodo($_POST[&#39;todo&#39;]);
}

if (isset($_POST[&#39;delete&#39;]) && !empty($_POST[&#39;id&#39;])) {
    deleteTodo($_POST[&#39;id&#39;]);
}</code></pre></div>



<p>2つ条件分岐を記述しています。</p>



<p>1つ目のif文はボタンの押下判定とテキストの存在判定を行い、Todoの追加処理をしています。2つ目のif文はボタンの押下判定とテキストの存在判定を行い、削除処理をしています。</p>



<h3 class="wp-block-heading">フロントエンド側の処理</h3>



<p>フロントエンド側は前回とほぼ変わっていません。一点、前回はセッションからTodoリストを取得、foreach文で回していたので、そこを$todos変数からの取得に変更しています。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>&lt;?php foreach ($todos as $todo): ?&gt;
    // 略
&lt;?php endforeach; ?&gt;</code></pre></div>



<p>これでデータベースとの連携が完了し、Todoリストを永続的に保存できるようになりました。お疲れさまでした！</p>
]]></content:encoded>
					
					<wfw:commentRss>https://code-ch.com/php-project-todolist-with-db/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>PHPで作る！シンプルなTodoリスト入門</title>
		<link>https://code-ch.com/php-project-todolist/</link>
		
		<dc:creator><![CDATA[TJR]]></dc:creator>
		<pubDate>Sun, 02 Feb 2025 09:04:57 +0000</pubDate>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[実践プロジェクト]]></category>
		<category><![CDATA[初学者向け]]></category>
		<guid isPermaLink="false">https://code-ch.com/?post_type=learning-projects&#038;p=676</guid>

					<description><![CDATA[この記事ではPHPでTodoリストを制作していきます。セッション管理、フォーム処理、配列操作など、Web開発の基礎が学べる実践的なプロジェクトになっています。 Todoリストの概要 今回実装していくTodoリストはシンプ [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>この記事ではPHPでTodoリストを制作していきます。セッション管理、フォーム処理、配列操作など、Web開発の基礎が学べる実践的なプロジェクトになっています。</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1024" height="576" src="https://code-ch.com/wp-content/uploads/2025/01/変数のコピー-4-1.jpg" alt="" class="wp-image-689" srcset="https://code-ch.com/wp-content/uploads/2025/01/変数のコピー-4-1.jpg 1024w, https://code-ch.com/wp-content/uploads/2025/01/変数のコピー-4-1-300x169.jpg 300w, https://code-ch.com/wp-content/uploads/2025/01/変数のコピー-4-1-768x432.jpg 768w, https://code-ch.com/wp-content/uploads/2025/01/変数のコピー-4-1-120x68.jpg 120w, https://code-ch.com/wp-content/uploads/2025/01/変数のコピー-4-1-160x90.jpg 160w, https://code-ch.com/wp-content/uploads/2025/01/変数のコピー-4-1-320x180.jpg 320w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<h2 class="wp-block-heading">Todoリストの概要</h2>



<p>今回実装していくTodoリストはシンプルな機能を盛り込んでいます。機能の一覧は以下です。</p>



<ul class="wp-block-list is-style-icon-list-check has-list-style">
<li>メモの追加</li>



<li>メモの一覧</li>



<li>メモの削除</li>
</ul>



<figure class="wp-block-video"><video height="888" style="aspect-ratio: 1784 / 888;" width="1784" autoplay controls loop src="https://code-ch.com/wp-content/uploads/2025/01/画面録画-2025-01-26-185607.mp4" playsinline></video><figcaption class="wp-element-caption">完成イメージ</figcaption></figure>



<h3 class="wp-block-heading">必要な前提知識</h3>



<ul class="wp-block-list">
<li>HTML/CSSの基本</li>



<li>PHPの基本文法</li>



<li>フォームの仕組み</li>



<li>配列の扱い方</li>
</ul>



<p>phpの環境構築がまだの方は、次の記事から導入してください。</p>



<div class="wp-block-cocoon-blocks-blogcard blogcard-type bct-none">

<a href="https://code-ch.com/php-xampp-install/" title="【PHP】環境構築（Windows11）" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img loading="lazy" decoding="async" width="160" height="90" src="https://code-ch.com/wp-content/uploads/2024/09/thumbnail-php-xampp-160x90.jpg" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://code-ch.com/wp-content/uploads/2024/09/thumbnail-php-xampp-160x90.jpg 160w, https://code-ch.com/wp-content/uploads/2024/09/thumbnail-php-xampp-300x169.jpg 300w, https://code-ch.com/wp-content/uploads/2024/09/thumbnail-php-xampp-1024x576.jpg 1024w, https://code-ch.com/wp-content/uploads/2024/09/thumbnail-php-xampp-768x432.jpg 768w, https://code-ch.com/wp-content/uploads/2024/09/thumbnail-php-xampp-1536x864.jpg 1536w, https://code-ch.com/wp-content/uploads/2024/09/thumbnail-php-xampp-120x68.jpg 120w, https://code-ch.com/wp-content/uploads/2024/09/thumbnail-php-xampp-320x180.jpg 320w, https://code-ch.com/wp-content/uploads/2024/09/thumbnail-php-xampp.jpg 1920w" sizes="(max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">【PHP】環境構築（Windows11）</div><div class="blogcard-snippet internal-blogcard-snippet">PHPの実行環境を構築する手順を分かりやすく解説。XAMPPを使ったローカル環境で、PHPスクリプトを実行します。</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://code-ch.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">code-ch.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2024.09.16</div></div></div></div></a>
</div>



<h3 class="wp-block-heading">ソースコードテンプレート</h3>



<p>下記ソースコードに処理を追加していきます。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-file="index.php" data-lang="PHP"><code>&lt;?php
// ※バックエンドの処理を記述していきます
?&gt;

&lt;!DOCTYPE html&gt;
&lt;html&gt;

&lt;head&gt;
    &lt;title&gt;My Todo List&lt;/title&gt;
    &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1.0&quot;&gt;
    &lt;link rel=&quot;stylesheet&quot; href=&quot;style.css&quot;&gt;
&lt;/head&gt;

&lt;body&gt;
    &lt;div class=&quot;container&quot;&gt;
        &lt;h1&gt;My Todo List&lt;/h1&gt;
        &lt;!-- ※フロントエンドの処理を記述していきます --&gt;
    &lt;/div&gt;
&lt;/body&gt;

&lt;/html&gt;</code></pre></div>



<p>スタイリングが必要であれば以下のcssを利用してください。（任意）</p>



<details class="wp-block-details my-details is-layout-flow wp-block-details-is-layout-flow"><summary>css（クリックで開く）</summary>
<div class="hcb_wrap"><pre class="prism line-numbers lang-css" data-file="style.css" data-lang="CSS"><code>* {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
    font-family: &quot;Helvetica Neue&quot;,
        Arial,
        &quot;Hiragino Kaku Gothic ProN&quot;,
        &quot;Hiragino Sans&quot;,
        Meiryo,
        sans-serif;
}

body {
    background-color: #f5f5f5;
    color: rgba(0, 0, 0, 0.87);
}

.container {
    max-width: 800px;
    margin: 0 auto;
    padding: 20px;
}

h1 {
    color: #1976d2;
    font-weight: 60 0;
    margin: 2rem 0;
    text-align: center;
}

.add-form {
    background: white;
    padding: 20px;
    border-radius: 8px;
    box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
    margin-bottom: 20px;
    display: flex;
    gap: 10px;
}

.add-form input[type=&quot;text&quot;] {
    flex: 1;
    padding: 12px 16px;
    border: 1px solid #e0e0e0;
    border-radius: 4px;
    font-size: 16px;
    transition: border-color 0.2s;
}

.add-form input[type=&quot;text&quot;]:focus {
    outline: none;
    border-color: #1976d2;
}

button {
    background: #1976d2;
    color: white;
    border: none;
    padding: 12px 24px;
    border-radius: 4px;
    font-size: 14px;
    font-weight: 500;
    text-transform: uppercase;
    cursor: pointer;
    transition: background 0.2s;
}

button:hover {
    background: #1565c0;
}

.todo-list {
    display: flex;
    flex-direction: column;
    gap: 12px;
}

.todo-item {
    background: white;
    padding: 16px;
    border-radius: 8px;
    box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
    display: flex;
    align-items: center;
    justify-content: space-between;
    transition: transform 0.2s;
}

.todo-item:hover {
    transform: translateY(-2px);
}

.todo-content {
    flex: 1;
}

.todo-text {
    font-size: 16px;
}

.delete-btn {
    background: transparent;
    color: #f44336;
    padding: 8px;
    min-width: auto;
}

.delete-btn:hover {
    background: rgba(244, 67, 54, 0.1);
}

@media (max-width: 600px) {
    .container {
        padding: 10px;
    }

    .add-form {
        flex-direction: column;
    }
}</code></pre></div>
</details>



<p></p>



<h2 class="wp-block-heading">メモ入力機能 ※フロントエンド側</h2>



<p>メモを追加するには、ユーザーが入力したテキストをサーバ側で受け取り、保持しておく必要があります。まずはメモ入力フォームを作成していきます。</p>



<div class="hcb_wrap"><pre class="prism off-numbers lang-php" data-lang="PHP"><code>        &lt;form method=&quot;POST&quot; class=&quot;add-form&quot;&gt;
            &lt;input type=&quot;text&quot; name=&quot;todo&quot; placeholder=&quot;新しいタスクを入力&quot; required&gt;
            &lt;button type=&quot;submit&quot; name=&quot;add&quot;&gt;追加&lt;/button&gt;
        &lt;/form&gt;</code></pre></div>



<p>これはユーザーが入力したテキストを、同ページに<span class="marker-under-red"><strong>POST</strong></span>する処理です。追加ボタンが押されると、フォーム内のデータがまとめてWebサーバに送られます。</p>



<h2 class="wp-block-heading">メモ保存機能　※バックエンド側</h2>



<p>送られたデータは、<span class="marker-under-red"><strong>セッション</strong></span>によって保持しています。セッションはサーバ内にデータを保存し、ブラウザを閉じるまでデータを保持することができます。</p>



<p>注意点として、セッションを使うにはsession_start()を行う必要があります。session_start()することで、セッション本体にあたるグローバル変数$_SESSIONにアクセスできるようになります。</p>



<h3 class="wp-block-heading">セッションの初期化</h3>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP"><code>session_start();

if (!isset($_SESSION[&#39;todos&#39;])) {
    $_SESSION[&#39;todos&#39;] = [];
}</code></pre></div>



<p>まずセッションをスタートして、セッションにメモが格納されていない場合、空の配列で初期化します。これにより、エラーを防ぎ、安全にデータを追加できます。</p>



<p>isset関数は、連想配列に指定のキーが<strong>存在する場合</strong>にtrueを返します。今回は関数の前に!がついているため、条件が反転されます。グローバル変数$_SESSIONに&#8217;todos&#8217;がなければ、空の配列で初期化する処理を行います。</p>



<h3 class="wp-block-heading">データの保存構造</h3>



<p>送信されたデータは以下のような構造で保存されます。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP"><code>$todo = [
    &#39;id&#39; =&gt; uniqid(),      // ユニークなID
    &#39;text&#39; =&gt; $_POST[&#39;todo&#39;] // メモの内容
];</code></pre></div>



<p>各項目の役割を見ていきましょう。</p>



<ul class="wp-block-list">
<li>uniqid(): 各メモを識別するための被らないIDを生成</li>



<li>$_POST[&#8216;todo&#8217;]: フォームから送信されたメモの内容</li>
</ul>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP" data-line="1,6,7"><code>if (isset($_POST[&#39;add&#39;]) && !empty($_POST[&#39;todo&#39;])) {
    $todo = [
        &#39;id&#39; =&gt; uniqid(),      // ユニークなID
        &#39;text&#39; =&gt; $_POST[&#39;todo&#39;] // メモの内容
    ];
    array_push($_SESSION[&#39;todos&#39;], $todo);
}</code></pre></div>



<p>この部分では、2つの条件を両方とも満たしているか確認しています。</p>



<ol class="wp-block-list">
<li>isset($_POST[&#8216;add&#8217;]): 追加ボタンが押されたかの確認</li>



<li>!empty($_POST[&#8216;todo&#8217;]): メモの内容が空でないことの確認</li>



<li>条件A <strong>&amp;&amp;</strong> 条件B: 左と右の条件が両方とも満たされる場合にtrueを返す</li>
</ol>



<p>empty関数は、連想配列に指定のキーが<strong>存在しない場合</strong>にtrueを返します。くわえて、<strong>空文字やnullの場合</strong>もtrueを返します。先述したコードでは、empty関数に!をつけることで条件を反転しています。<br>条件を満たした場合、array_push()を使って新しいメモを配列に追加します。</p>



<h3 class="wp-block-heading">実装のポイント</h3>



<ol class="wp-block-list">
<li>フォームのバリデーション
<ul class="wp-block-list">
<li>必須入力項目の設定（required属性）</li>



<li>サーバーサイドでの入力チェック</li>
</ul>
</li>



<li>データの永続化
<ul class="wp-block-list">
<li>セッションを使用したデータの一時保存</li>



<li>配列構造での管理</li>
</ul>
</li>



<li>一意性の確保
<ul class="wp-block-list">
<li>uniqid()によるユニークなID付与</li>



<li>後の削除処理で使用</li>
</ul>
</li>
</ol>



<p>このように、メモの追加機能は単純な処理に見えて、様々な要素が組み合わさっています。次は、保存したメモの一覧表示について解説していきましょう。</p>



<h2 class="wp-block-heading">メモの一覧表示機能　※フロントエンド側</h2>



<p>保存したメモを表示する部分を追加していきましょう。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP"><code>&lt;div class=&quot;todo-list&quot;&gt;
    &lt;?php foreach ($_SESSION[&#39;todos&#39;] as $todo): ?&gt;
        &lt;div class=&quot;todo-item&quot;&gt;
            &lt;div class=&quot;todo-content&quot;&gt;
                &lt;div class=&quot;todo-text&quot;&gt;&lt;?php echo htmlspecialchars($todo[&#39;text&#39;]); ?&gt;&lt;/div&gt;
            &lt;/div&gt;
        &lt;/div&gt;
    &lt;?php endforeach; ?&gt;
&lt;/div&gt;</code></pre></div>



<h3 class="wp-block-heading">データの取り出し</h3>



<p>セッションに保存されたメモは、foreachループを使って1件ずつ取り出します。&nbsp;$_SESSION[&#8216;todos&#8217;]には先ほど保存した配列が入っており、これを$todo変数に順番に代入しながら処理していきます。</p>



<h3 class="wp-block-heading">表示の安全性</h3>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP"><code>&lt;?php echo htmlspecialchars($todo[&#39;text&#39;]); ?&gt;</code></pre></div>



<p>メモの内容を表示する際は、必ずhtmlspecialchars()関数でエスケープ処理をします。 これはXSS（クロスサイトスクリプティング）と呼ばれる攻撃を防ぐための対策です。ユーザーの入力を表示する場合は必須です。</p>



<h3 class="wp-block-heading">実装のポイント</h3>



<ol class="wp-block-list">
<li>データの取り出し
<ul class="wp-block-list">
<li>foreachループによる配列処理</li>



<li>配列のキーを意識した実装</li>
</ul>
</li>



<li>セキュリティ対策
<ul class="wp-block-list">
<li>htmlspecialchars()によるエスケープ処理</li>



<li>安全な出力</li>
</ul>
</li>



<li>レイアウト設計
<ul class="wp-block-list">
<li>階層構造を持つHTML</li>



<li>CSSによるスタイリング</li>
</ul>
</li>
</ol>



<h2 class="wp-block-heading">メモの削除機能</h2>



<p>保存したメモを削除する機能を見ていきましょう。フロントエンド側の処理から解説していきます。</p>



<h3 class="wp-block-heading">削除ボタンの実装　※フロントエンド側</h3>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP"><code>&lt;form method=&quot;POST&quot; class=&quot;form-inline&quot;&gt;
    &lt;input type=&quot;hidden&quot; name=&quot;id&quot; value=&quot;&lt;?php echo $todo[&#39;id&#39;]; ?&gt;&quot;&gt;
    &lt;button type=&quot;submit&quot; name=&quot;delete&quot; class=&quot;delete-btn&quot;&gt;delete&lt;/button&gt;
&lt;/form&gt;</code></pre></div>



<p>各メモに削除用のフォームを用意します。</p>



<ul class="wp-block-list">
<li>hidden項目で対象メモのIDを保持</li>



<li>POSTメソッドで送信</li>
</ul>



<h3 class="wp-block-heading">削除処理の実装　※バックエンド側</h3>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP"><code>if (isset($_POST[&#39;delete&#39;]) && !empty($_POST[&#39;id&#39;])) {
    $_SESSION[&#39;todos&#39;] = array_filter($_SESSION[&#39;todos&#39;], function ($todo) {
        return $todo[&#39;id&#39;] != $_POST[&#39;id&#39;];
    });
}</code></pre></div>



<h3 class="wp-block-heading">重要なポイント</h3>



<ol class="wp-block-list">
<li>削除の判定
<ul class="wp-block-list">
<li>削除ボタンが押されたか確認: isset($_POST[&#8216;delete&#8217;])</li>



<li>削除対象のIDが存在するか確認: !empty($_POST[&#8216;id&#8217;])</li>



<li>両方の条件を満たしているか確認: isset($_POST[&#8216;delete&#8217;]) &amp;&amp; !empty($_POST[&#8216;id&#8217;])</li>
</ul>
</li>



<li>array_filter関数の使用
<ul class="wp-block-list">
<li>配列から特定の要素を除外</li>



<li>コールバック関数で条件指定</li>



<li>新しい配列を生成</li>
</ul>
</li>



<li>セキュリティ
<ul class="wp-block-list">
<li>POSTメソッドによるセキュリティリスクの低減</li>



<li>IDの存在確認</li>
</ul>
</li>
</ol>



<h3 class="wp-block-heading">データの永続性</h3>



<p>削除されたデータはセッションから完全に削除されます。ブラウザを閉じるまでこの状態が維持されます。</p>



<p>これで基本的なTodoリストの機能が完成しました！ソースはこちらです。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP"><code>&lt;?php
session_start();

// 初期化
if (!isset($_SESSION[&#39;todos&#39;])) {
    $_SESSION[&#39;todos&#39;] = [];
}

// Todoの追加
if (isset($_POST[&#39;add&#39;]) && !empty($_POST[&#39;todo&#39;])) {
    $todo = [
        &#39;id&#39; =&gt; uniqid(),
        &#39;text&#39; =&gt; $_POST[&#39;todo&#39;],
    ];
    array_push($_SESSION[&#39;todos&#39;], $todo);
}

// Todoの削除
if (isset($_POST[&#39;delete&#39;]) && !empty($_POST[&#39;id&#39;])) {
    $_SESSION[&#39;todos&#39;] = array_filter($_SESSION[&#39;todos&#39;], function ($todo) {
        return $todo[&#39;id&#39;] != $_POST[&#39;id&#39;];
    });
}
?&gt;
&lt;!DOCTYPE html&gt;
&lt;html&gt;

&lt;head&gt;
    &lt;title&gt;My Todo List&lt;/title&gt;
    &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1.0&quot;&gt;
    &lt;link rel=&quot;stylesheet&quot; href=&quot;style.css&quot;&gt;
&lt;/head&gt;

&lt;body&gt;
    &lt;div class=&quot;container&quot;&gt;
        &lt;h1&gt;My Todo List&lt;/h1&gt;

        &lt;form method=&quot;POST&quot; class=&quot;add-form&quot;&gt;
            &lt;input type=&quot;text&quot; name=&quot;todo&quot; placeholder=&quot;新しいタスクを入力&quot; required&gt;
            &lt;button type=&quot;submit&quot; name=&quot;add&quot;&gt;追加&lt;/button&gt;
        &lt;/form&gt;

        &lt;div class=&quot;todo-list&quot;&gt;
            &lt;?php foreach ($_SESSION[&#39;todos&#39;] as $todo): ?&gt;
                &lt;div class=&quot;todo-item&quot;&gt;
                    &lt;div class=&quot;todo-content&quot;&gt;
                        &lt;div class=&quot;todo-text&quot;&gt;&lt;?php echo htmlspecialchars($todo[&#39;text&#39;]); ?&gt;&lt;/div&gt;
                    &lt;/div&gt;
                    &lt;form method=&quot;POST&quot; class=&quot;form-inline&quot;&gt;
                        &lt;input type=&quot;hidden&quot; name=&quot;id&quot; value=&quot;&lt;?php echo $todo[&#39;id&#39;]; ?&gt;&quot;&gt;
                        &lt;button type=&quot;submit&quot; name=&quot;delete&quot; class=&quot;delete-btn&quot;&gt;delete&lt;/button&gt;
                    &lt;/form&gt;
                &lt;/div&gt;
            &lt;?php endforeach; ?&gt;
        &lt;/div&gt;
    &lt;/div&gt;
&lt;/body&gt;

&lt;/html&gt;</code></pre></div>



<p>次回は、ブラウザが終了してもデータを保持できるように、データベースと連携していきます。</p>



<div class="wp-block-cocoon-blocks-blogcard blogcard-type bct-next">

<a href="https://code-ch.com/php-project-todolist-with-db/" title="PHPで作る！シンプルなTodoリスト - データベース連携編" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img loading="lazy" decoding="async" width="160" height="90" src="https://code-ch.com/wp-content/uploads/2025/02/thumbnail_todo_db-160x90.jpg" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://code-ch.com/wp-content/uploads/2025/02/thumbnail_todo_db-160x90.jpg 160w, https://code-ch.com/wp-content/uploads/2025/02/thumbnail_todo_db-300x169.jpg 300w, https://code-ch.com/wp-content/uploads/2025/02/thumbnail_todo_db-1024x576.jpg 1024w, https://code-ch.com/wp-content/uploads/2025/02/thumbnail_todo_db-768x432.jpg 768w, https://code-ch.com/wp-content/uploads/2025/02/thumbnail_todo_db-1536x864.jpg 1536w, https://code-ch.com/wp-content/uploads/2025/02/thumbnail_todo_db-120x68.jpg 120w, https://code-ch.com/wp-content/uploads/2025/02/thumbnail_todo_db-320x180.jpg 320w, https://code-ch.com/wp-content/uploads/2025/02/thumbnail_todo_db.jpg 1920w" sizes="(max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">PHPで作る！シンプルなTodoリスト - データベース連携編</div><div class="blogcard-snippet internal-blogcard-snippet">PHPとMySQLを使って永続的なTodoリストを作成する方法を解説。データベースの作成からテーブル設計、PHPでのMySQL操作まで、実践的なステップで学べます。XAMPPを使用した環境構築から、セキュアなデータベース連携までをカバー。</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://code-ch.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">code-ch.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2025.02.24</div></div></div></div></a>
</div>
]]></content:encoded>
					
		
		<enclosure url="https://code-ch.com/wp-content/uploads/2025/01/画面録画-2025-01-26-185607.mp4" length="152745" type="video/mp4" />

			</item>
		<item>
		<title>【PHP】while文：基本ガイド</title>
		<link>https://code-ch.com/php-while/</link>
					<comments>https://code-ch.com/php-while/#respond</comments>
		
		<dc:creator><![CDATA[TJR]]></dc:creator>
		<pubDate>Mon, 14 Oct 2024 09:28:45 +0000</pubDate>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[初学者向け]]></category>
		<category><![CDATA[制御構造]]></category>
		<guid isPermaLink="false">https://code-ch.com/?p=624</guid>

					<description><![CDATA[while文の基本 while文は、PHPにおける繰り返し処理（ループ）の一種です。指定された条件が真である限り、コードブロックを繰り返し実行します。 基本構文 動作の仕組み 使用例 カウントダウン 配列の処理 注意点と [&#8230;]]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="576" src="https://code-ch.com/wp-content/uploads/2024/10/thumbnail_php-while-1024x576.jpg" alt="" class="wp-image-632" srcset="https://code-ch.com/wp-content/uploads/2024/10/thumbnail_php-while-1024x576.jpg 1024w, https://code-ch.com/wp-content/uploads/2024/10/thumbnail_php-while-300x169.jpg 300w, https://code-ch.com/wp-content/uploads/2024/10/thumbnail_php-while-768x432.jpg 768w, https://code-ch.com/wp-content/uploads/2024/10/thumbnail_php-while-1536x864.jpg 1536w, https://code-ch.com/wp-content/uploads/2024/10/thumbnail_php-while-120x68.jpg 120w, https://code-ch.com/wp-content/uploads/2024/10/thumbnail_php-while-160x90.jpg 160w, https://code-ch.com/wp-content/uploads/2024/10/thumbnail_php-while-320x180.jpg 320w, https://code-ch.com/wp-content/uploads/2024/10/thumbnail_php-while.jpg 1920w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<h2 class="wp-block-heading">while文の基本</h2>



<p>while文は、PHPにおける繰り返し処理（ループ）の一種です。指定された条件が真である限り、コードブロックを繰り返し実行します。</p>



<h3 class="wp-block-heading">基本構文</h3>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP"><code>while (条件) {
    // 実行するコード
}</code></pre></div>



<h3 class="wp-block-heading">動作の仕組み</h3>



<ol class="wp-block-list">
<li>条件を評価します。</li>



<li>条件が真（true）の場合、コードブロックを実行します。</li>



<li>コードブロック終了後、再び条件を評価します。</li>



<li>条件が偽（false）になるまで、2と3を繰り返します。</li>
</ol>



<h2 class="wp-block-heading">使用例</h2>



<h3 class="wp-block-heading">カウントダウン</h3>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP"><code>$count = 5;
while ($count &gt; 0) {
    echo $count . PHP_EOL;
    $count -= 1;
}
echo &quot;カウントダウン終了！&quot;;</code></pre></div>



<div class="wp-block-cocoon-blocks-tab-caption-box-1 tab-caption-box block-box has-border-color has-cyan-border-color not-nested-style cocoon-block-tab-caption-box" style="--cocoon-custom-border-color:#00a3af"><div class="tab-caption-box-label block-box-label box-label"><span class="tab-caption-box-label-text block-box-label-text box-label-text">出力</span></div><div class="tab-caption-box-content block-box-content box-content">
<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>5
4
3
2
1
カウントダウン終了！</code></pre></div>
</div></div>



<h3 class="wp-block-heading">配列の処理</h3>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP"><code>$fruits = [&#39;りんご&#39;, &#39;バナナ&#39;, &#39;オレンジ&#39;, &#39;ぶどう&#39;];
$i = 0;
while ($i &lt; count($fruits)) {
    echo $fruits[$i] . PHP_EOL;
    $i += 1;
}</code></pre></div>



<div class="wp-block-cocoon-blocks-tab-caption-box-1 tab-caption-box block-box has-border-color has-cyan-border-color not-nested-style cocoon-block-tab-caption-box" style="--cocoon-custom-border-color:#00a3af"><div class="tab-caption-box-label block-box-label box-label"><span class="tab-caption-box-label-text block-box-label-text box-label-text">出力</span></div><div class="tab-caption-box-content block-box-content box-content">
<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>りんご
バナナ
オレンジ
ぶどう</code></pre></div>
</div></div>



<h2 class="wp-block-heading">注意点とベストプラクティス</h2>



<ol class="wp-block-list">
<li><strong>無限ループに注意</strong>: 条件が常に真になる場合、無限ループに陥る可能性があります。</li>



<li><strong>ループ変数の更新</strong>: while文内でループ変数を適切に更新しないと、意図しない動作になる可能性があります。</li>



<li><strong>break文の使用</strong>: ループを途中で終了したい場合はbreak文を使用します。</li>



<li><strong>continue文の活用</strong>: 現在の繰り返しをスキップして、次の繰り返しに進むにはcontinue文を使用します。</li>
</ol>



<h2 class="wp-block-heading">do-while文</h2>



<p>while文の変形として、do-while文があります。こちらは条件チェックを最後に行うため、最低1回はループ内のコードが実行されます。</p>



<h3 class="wp-block-heading">基本構文</h3>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP"><code>do {
    // 実行するコード
} while (条件);</code></pre></div>



<h3 class="wp-block-heading">使用例</h3>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP"><code>$i = 0;
do {
    echo $i . PHP_EOL;
    $i += 1;
} while ($i &lt; 5);</code></pre></div>



<div class="wp-block-cocoon-blocks-tab-caption-box-1 tab-caption-box block-box has-border-color has-cyan-border-color not-nested-style cocoon-block-tab-caption-box" style="--cocoon-custom-border-color:#00a3af"><div class="tab-caption-box-label block-box-label box-label"><span class="tab-caption-box-label-text block-box-label-text box-label-text">出力</span></div><div class="tab-caption-box-content block-box-content box-content">
<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>0
1
2
3
4</code></pre></div>
</div></div>



<h2 class="wp-block-heading">まとめ</h2>



<p>while文は、PHPプログラミングにおいて効率的で柔軟なコードを書くことができます。ただし、無限ループや不適切な条件設定には十分注意が必要です。実際のプログラミングでは、for文やforeach文など、他のループ構造と比較検討しながらコードを組み立てていきましょう。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://code-ch.com/php-while/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【PHP】演算子の基本ガイド：実用例を交えて解説</title>
		<link>https://code-ch.com/php-operator/</link>
					<comments>https://code-ch.com/php-operator/#respond</comments>
		
		<dc:creator><![CDATA[TJR]]></dc:creator>
		<pubDate>Sun, 06 Oct 2024 09:07:24 +0000</pubDate>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[初学者向け]]></category>
		<category><![CDATA[制御構造]]></category>
		<guid isPermaLink="false">https://code-ch.com/?p=593</guid>

					<description><![CDATA[一口に演算子と言っても、「+」や「-」などの算術演算子から、「==」や「!=」などの比較演算子など種類は多岐にわたります。この記事ではこれらをまとめて解説していきます。 算術演算子 足し算、引き算、掛け算、割り算など。  [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>一口に演算子と言っても、「+」や「-」などの算術演算子から、「==」や「!=」などの比較演算子など種類は多岐にわたります。この記事ではこれらをまとめて解説していきます。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="576" src="https://code-ch.com/wp-content/uploads/2024/10/thumbnail-php-operator-1024x576.jpg" alt="" class="wp-image-612" srcset="https://code-ch.com/wp-content/uploads/2024/10/thumbnail-php-operator-1024x576.jpg 1024w, https://code-ch.com/wp-content/uploads/2024/10/thumbnail-php-operator-300x169.jpg 300w, https://code-ch.com/wp-content/uploads/2024/10/thumbnail-php-operator-768x432.jpg 768w, https://code-ch.com/wp-content/uploads/2024/10/thumbnail-php-operator-1536x864.jpg 1536w, https://code-ch.com/wp-content/uploads/2024/10/thumbnail-php-operator-120x68.jpg 120w, https://code-ch.com/wp-content/uploads/2024/10/thumbnail-php-operator-160x90.jpg 160w, https://code-ch.com/wp-content/uploads/2024/10/thumbnail-php-operator-320x180.jpg 320w, https://code-ch.com/wp-content/uploads/2024/10/thumbnail-php-operator.jpg 1920w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<h2 class="wp-block-heading">算術演算子</h2>



<p>足し算、引き算、掛け算、割り算など。</p>



<figure class="wp-block-table is-style-regular"><table class="has-fixed-layout"><thead><tr><th>演算子</th><th>用例</th><th>意味</th></tr></thead><tbody><tr><td>+</td><td>A + B</td><td>AとBを足す</td></tr><tr><td>&#8211;</td><td>A &#8211; B</td><td>AからBを引く</td></tr><tr><td>*</td><td>A * B</td><td>AにBを掛ける</td></tr><tr><td>/</td><td>A / B</td><td>AをBで割る</td></tr><tr><td>%</td><td>A % B</td><td>AをBで割った「余り」を求める</td></tr></tbody></table></figure>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP"><code>echo 8 + 2; // 出力：10
echo 8 - 2; // 出力：6
echo 8 * 2; // 出力：16
echo 8 / 2; // 出力：4
echo 8 % 2; // 出力：0</code></pre></div>



<div class="wp-block-cocoon-blocks-tab-box-1 blank-box bb-tab bb-tips block-box has-border-color has-light-blue-border-color">
<p>使い道がイメージし辛い「%」ですが、偶数・奇数の判定に使うことができます。</p>



<div class="wp-block-cocoon-blocks-caption-box-1 caption-box block-box has-border-color has-light-blue-border-color not-nested-style cocoon-block-caption-box" style="--cocoon-custom-border-color:#2ca9e1"><div class="caption-box-label block-box-label box-label fab-edit"><span class="caption-box-label-text block-box-label-text box-label-text">例</span></div><div class="caption-box-content block-box-content box-content">
<p>nが偶数の場合、2で割り切れるため n % 2 の計算結果は0になります。<br>nが奇数の場合、2で割り切れないためn % 2 の計算結果は1になります。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>echo 2 % 2 // 0
echo 1 % 2 // 1
echo 5 % 2 // 1
echo 10 % 2 // 0</code></pre></div>
</div></div>
</div>



<h2 class="wp-block-heading">代入演算子</h2>



<p>変数に値を代入するために使用されます。</p>



<figure class="wp-block-table is-style-regular"><table class="has-fixed-layout"><thead><tr><th>演算子</th><th>用例</th><th>意味</th></tr></thead><tbody><tr><td>=</td><td>A = B</td><td>AにBを代入する</td></tr><tr><td>+=</td><td>A += B</td><td>AにBを足す<br>（A = A + B）</td></tr><tr><td>-=</td><td>A -= B</td><td>AからBを引く<br>（A = A &#8211; B）</td></tr><tr><td>*=</td><td>A *= B</td><td>AにBを掛ける<br>（A = A * B）</td></tr><tr><td>/=</td><td>A /= B</td><td>AをBで割る<br>（A = A / B）</td></tr><tr><td>%=</td><td>A %= B</td><td>AをBで割った「余り」を求める<br>（A = A % B）</td></tr></tbody></table></figure>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP"><code>$a = 10;
$a += 2; // $a：12
$a *= 2; // $a：24
$a %= 2; // $a：0</code></pre></div>



<h2 class="wp-block-heading">比較演算子</h2>



<p>2つの値を比較するために使用されます。</p>



<figure class="wp-block-table is-style-regular"><table class="has-fixed-layout"><thead><tr><th>演算子</th><th>用例</th><th>意味</th></tr></thead><tbody><tr><td>==</td><td>A == B</td><td>同値のときtrue<br>（型を比較しない）</td></tr><tr><td>===</td><td>A === B</td><td>同値のときtrue<br>（型も比較する）</td></tr><tr><td>!=</td><td>A != B</td><td>同値でないときtrue<br>（型を比較しない）</td></tr><tr><td>!==</td><td>A !== B</td><td>同値でないときtrue<br>（型も比較する）</td></tr><tr><td>&gt;</td><td>A &gt; B</td><td>左辺が右辺より大きいときtrue</td></tr><tr><td>&lt;</td><td>A &lt; B</td><td>左辺が右辺より小さいときtrue</td></tr><tr><td>&gt;=</td><td>A &gt;= B</td><td>左辺が右辺以上のときtrue</td></tr><tr><td>&lt;=</td><td>A &lt;= B</td><td>左辺が右辺以下のときtrue</td></tr></tbody></table></figure>



<p>「==」および「!=」はゆるい比較、「===」および「!==」は厳密な比較です。</p>



<p>int型の 5 とstring型の &#8220;5&#8221; は「==」だとtrueですが、「===」だとfalseになります。他にも空文字「&#8221;&#8221;」とnullの比較は「==」だと同値になってしまったりします。</p>



<div class="wp-block-cocoon-blocks-tab-box-1 blank-box bb-tab bb-memo block-box">
<p>相違点が多いので、詳細はphp公式ドキュメントをご覧ください。<br><a href="https://www.php.net/manual/ja/types.comparisons.php">https://www.php.net/manual/ja/types.comparisons.php</a></p>
</div>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP"><code>$a = 5;
$b = &quot;5&quot;;
var_dump($a == $b);   // bool(true)
var_dump($a === $b);  // bool(false)
var_dump($a &lt; 10);    // bool(true)</code></pre></div>



<h2 class="wp-block-heading">論理演算子</h2>



<p>論理演算子は条件の組み合わせに使用されます。</p>



<figure class="wp-block-table is-style-regular"><table class="has-fixed-layout"><thead><tr><th>演算子</th><th>用例</th><th>意味</th></tr></thead><tbody><tr><td>&amp;&amp;</td><td>A &amp;&amp; B</td><td>AかつBのときtrue</td></tr><tr><td>||</td><td>A || B</td><td>AもしくはBのときtrue</td></tr><tr><td>!</td><td>!A</td><td>Aでなければtrue</td></tr></tbody></table></figure>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP"><code>$is_sunny = true; // 晴れかどうか
$is_warm = false; // 暖かいかどうか

if ($is_sunny && $is_warm) {
    echo &quot;ピクニック日和です！&quot;;
} elseif ($is_sunny || $is_warm) {
    echo &quot;まあまあの天気です。&quot;;
} else {
    echo &quot;家でゆっくり過ごしましょう。&quot;;
}</code></pre></div>



<h2 class="wp-block-heading">その他の演算子</h2>



<h3 class="wp-block-heading">文字列結合演算子</h3>



<p>文字列を連結するための演算子です。</p>



<figure class="wp-block-table is-style-regular"><table class="has-fixed-layout"><thead><tr><th>演算子</th><th>用例</th><th>意味</th></tr></thead><tbody><tr><td>.</td><td>A . B</td><td>AとBを結合して文字列で返す</td></tr></tbody></table></figure>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP"><code>$first_name = &quot;John&quot;;
$last_name = &quot;Doe&quot;;
echo $first_name . &quot; &quot; . $last_name;  // 出力: John Doe</code></pre></div>



<h3 class="wp-block-heading">三項演算子</h3>



<p>条件に応じて値を返します。</p>



<figure class="wp-block-table is-style-regular"><table class="has-fixed-layout"><thead><tr><th>演算子</th><th>用例</th><th>意味</th></tr></thead><tbody><tr><td>条件 ? 値1 : 値2</td><td>A ? B : C</td><td>AがtrueのときBを、falseのときCを返す</td></tr></tbody></table></figure>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP"><code>$is_member = true;
$price = $is_member ? &#39;￥200&#39; : &#39;￥300&#39;;
echo $price // 出力:￥200

// 以下のif-else文と同等です
$is_member = true;
if($is_member) {
    $price = &#39;￥200&#39;;
} else {
    $price = &#39;￥300&#39;;
}
echo $price // 出力:￥200</code></pre></div>



<h3 class="wp-block-heading">Null合体演算子</h3>



<p>条件がnullの場合は指定した値を返します。</p>



<figure class="wp-block-table is-style-regular"><table class="has-fixed-layout"><thead><tr><th>演算子</th><th>用例</th><th>意味</th></tr></thead><tbody><tr><td>??</td><td>A ?? B</td><td>AがnullのときBを、null以外のときAを返す</td></tr></tbody></table></figure>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP"><code>$students_count = [&#39;1A&#39; =&gt; &#39;32&#39;, &#39;1B&#39; =&gt; &#39;30&#39;, &#39;2A&#39; =&gt; &#39;30&#39;,];
echo $students_count[&#39;3C&#39;] ?? &#39;No such classrooms&#39;;</code></pre></div>



<h2 class="wp-block-heading">まとめ</h2>



<p>この記事では、PHPプログラミングで最も頻繁に使用される基本的な演算子を紹介しました。これらの演算子を理解し、適切に使用することで、シンプルで効果的なPHPコードを書くことができます。練習を重ねることで、これらの演算子の使用に慣れていきましょう。</p>



<p>次のステップとしては、条件文（if-else）、ループ（for, while）、関数などのPHPの基本構造と組み合わせて、これらの演算子を使用する方法を学ぶことをお勧めします。</p>



<div style="height:8px" aria-hidden="true" class="wp-block-spacer"></div>



<div class="wp-block-cocoon-blocks-blogcard blogcard-type bct-together">

<a href="https://code-ch.com/if-2/" title="【PHP】if文の基本ガイド：書き方や条件式について解説" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img loading="lazy" decoding="async" width="160" height="90" src="https://code-ch.com/wp-content/uploads/2024/08/変数のコピー-1-160x90.jpg" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://code-ch.com/wp-content/uploads/2024/08/変数のコピー-1-160x90.jpg 160w, https://code-ch.com/wp-content/uploads/2024/08/変数のコピー-1-300x169.jpg 300w, https://code-ch.com/wp-content/uploads/2024/08/変数のコピー-1-1024x576.jpg 1024w, https://code-ch.com/wp-content/uploads/2024/08/変数のコピー-1-768x432.jpg 768w, https://code-ch.com/wp-content/uploads/2024/08/変数のコピー-1-1536x864.jpg 1536w, https://code-ch.com/wp-content/uploads/2024/08/変数のコピー-1-120x68.jpg 120w, https://code-ch.com/wp-content/uploads/2024/08/変数のコピー-1-320x180.jpg 320w, https://code-ch.com/wp-content/uploads/2024/08/変数のコピー-1.jpg 1920w" sizes="(max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">【PHP】if文の基本ガイド：書き方や条件式について解説</div><div class="blogcard-snippet internal-blogcard-snippet">この記事ではif文について深堀りしています。基本構文からif-else、if-elseif-elseの使い方や複数条件の判定まで、具体的な例を交えてわかりやすく説明しています。</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://code-ch.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">code-ch.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2024.08.28</div></div></div></div></a>
</div>



<div style="height:4px" aria-hidden="true" class="wp-block-spacer"></div>



<div class="wp-block-cocoon-blocks-blogcard blogcard-type bct-together">

<a href="https://code-ch.com/php-for/" title="【PHP】for文の基本と実用例：使い方や記述方法を解説" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img loading="lazy" decoding="async" width="160" height="90" src="https://code-ch.com/wp-content/uploads/2024/09/変数のコピー-3-160x90.jpg" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://code-ch.com/wp-content/uploads/2024/09/変数のコピー-3-160x90.jpg 160w, https://code-ch.com/wp-content/uploads/2024/09/変数のコピー-3-300x169.jpg 300w, https://code-ch.com/wp-content/uploads/2024/09/変数のコピー-3-1024x576.jpg 1024w, https://code-ch.com/wp-content/uploads/2024/09/変数のコピー-3-768x432.jpg 768w, https://code-ch.com/wp-content/uploads/2024/09/変数のコピー-3-1536x864.jpg 1536w, https://code-ch.com/wp-content/uploads/2024/09/変数のコピー-3-120x68.jpg 120w, https://code-ch.com/wp-content/uploads/2024/09/変数のコピー-3-320x180.jpg 320w, https://code-ch.com/wp-content/uploads/2024/09/変数のコピー-3.jpg 1920w" sizes="(max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">【PHP】for文の基本と実用例：使い方や記述方法を解説</div><div class="blogcard-snippet internal-blogcard-snippet">本記事では、PHPのfor文の基本構造と、実際に使う際の具体例を紹介します。初心者でも理解しやすいように、シンプルな例を交えながら解説します。</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://code-ch.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">code-ch.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2024.09.07</div></div></div></div></a>
</div>
]]></content:encoded>
					
					<wfw:commentRss>https://code-ch.com/php-operator/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【PHP】環境構築（Windows11）</title>
		<link>https://code-ch.com/php-xampp-install/</link>
					<comments>https://code-ch.com/php-xampp-install/#respond</comments>
		
		<dc:creator><![CDATA[TJR]]></dc:creator>
		<pubDate>Mon, 16 Sep 2024 11:25:35 +0000</pubDate>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[初学者向け]]></category>
		<guid isPermaLink="false">https://code-ch.com/?p=485</guid>

					<description><![CDATA[PHPの実行環境を構築するには、Webサーバ（必須）やMySQLと連携する必要があります。これらの環境を簡単に構築できるXAMPPを使って、PHPの開発環境を構築していきます。 XAMPPの導入 OS：Windows11 [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>PHPの実行環境を構築するには、Webサーバ（必須）やMySQLと連携する必要があります。これらの環境を簡単に構築できるXAMPPを使って、PHPの開発環境を構築していきます。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="576" src="https://code-ch.com/wp-content/uploads/2024/09/thumbnail-php-xampp-1024x576.jpg" alt="" class="wp-image-509" srcset="https://code-ch.com/wp-content/uploads/2024/09/thumbnail-php-xampp-1024x576.jpg 1024w, https://code-ch.com/wp-content/uploads/2024/09/thumbnail-php-xampp-300x169.jpg 300w, https://code-ch.com/wp-content/uploads/2024/09/thumbnail-php-xampp-768x432.jpg 768w, https://code-ch.com/wp-content/uploads/2024/09/thumbnail-php-xampp-1536x864.jpg 1536w, https://code-ch.com/wp-content/uploads/2024/09/thumbnail-php-xampp-120x68.jpg 120w, https://code-ch.com/wp-content/uploads/2024/09/thumbnail-php-xampp-160x90.jpg 160w, https://code-ch.com/wp-content/uploads/2024/09/thumbnail-php-xampp-320x180.jpg 320w, https://code-ch.com/wp-content/uploads/2024/09/thumbnail-php-xampp.jpg 1920w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<h2 class="wp-block-heading">XAMPPの導入</h2>



<p>OS：Windows11</p>



<h3 class="wp-block-heading">インストーラのダウンロード</h3>



<p>公式サイトからインストーラを入手します。</p>



<p><a rel="noopener" href="https://www.apachefriends.org/jp/download.html" target="_blank">Download XAMPP</a></p>



<p>最新版の8.2.12(2024年9月16日現在)をダウンロードしていきます。</p>



<figure class="wp-block-image size-large is-resized"><img loading="lazy" decoding="async" width="1024" height="526" src="https://code-ch.com/wp-content/uploads/2024/09/xampp-download-1024x526.jpg" alt="" class="wp-image-486" style="width:600px" srcset="https://code-ch.com/wp-content/uploads/2024/09/xampp-download-1024x526.jpg 1024w, https://code-ch.com/wp-content/uploads/2024/09/xampp-download-300x154.jpg 300w, https://code-ch.com/wp-content/uploads/2024/09/xampp-download-768x395.jpg 768w, https://code-ch.com/wp-content/uploads/2024/09/xampp-download-1536x790.jpg 1536w, https://code-ch.com/wp-content/uploads/2024/09/xampp-download.jpg 1920w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>ダウンロードが完了したら、インストーラを起動しましょう。<br>ポップアップが出ますが、OKを押して次に進みます。</p>



<figure class="wp-block-image size-full is-resized"><img loading="lazy" decoding="async" width="814" height="360" src="https://code-ch.com/wp-content/uploads/2024/09/xampp-warning.png" alt="" class="wp-image-490" style="width:600px" srcset="https://code-ch.com/wp-content/uploads/2024/09/xampp-warning.png 814w, https://code-ch.com/wp-content/uploads/2024/09/xampp-warning-300x133.png 300w, https://code-ch.com/wp-content/uploads/2024/09/xampp-warning-768x340.png 768w" sizes="(max-width: 814px) 100vw, 814px" /></figure>



<p>Nextを押します。</p>



<figure class="wp-block-image size-full is-resized"><img loading="lazy" decoding="async" width="1004" height="840" src="https://code-ch.com/wp-content/uploads/2024/09/xampp-setup.png" alt="" class="wp-image-489" style="width:600px" srcset="https://code-ch.com/wp-content/uploads/2024/09/xampp-setup.png 1004w, https://code-ch.com/wp-content/uploads/2024/09/xampp-setup-300x251.png 300w, https://code-ch.com/wp-content/uploads/2024/09/xampp-setup-768x643.png 768w" sizes="(max-width: 1004px) 100vw, 1004px" /></figure>



<p>インストールするコンポーネントを選べます。特に変更の必要はありません。Nextを押します。</p>



<figure class="wp-block-image size-full is-resized"><img loading="lazy" decoding="async" width="1004" height="840" src="https://code-ch.com/wp-content/uploads/2024/09/xampp-select.png" alt="" class="wp-image-491" style="width:600px" srcset="https://code-ch.com/wp-content/uploads/2024/09/xampp-select.png 1004w, https://code-ch.com/wp-content/uploads/2024/09/xampp-select-300x251.png 300w, https://code-ch.com/wp-content/uploads/2024/09/xampp-select-768x643.png 768w" sizes="(max-width: 1004px) 100vw, 1004px" /></figure>



<p>インストールするフォルダを選択できます。ドライブの直下が嫌な場合は好きなディレクトリを指定してNextを押します。<br><span class="marker-under-red">※ C:\Program Files の配下にはインストールしないようにしてください。うまく動作しない原因になります。</span></p>



<figure class="wp-block-image size-full is-resized"><img loading="lazy" decoding="async" width="1004" height="840" src="https://code-ch.com/wp-content/uploads/2024/09/xampp-folder.png" alt="" class="wp-image-492" style="width:600px" srcset="https://code-ch.com/wp-content/uploads/2024/09/xampp-folder.png 1004w, https://code-ch.com/wp-content/uploads/2024/09/xampp-folder-300x251.png 300w, https://code-ch.com/wp-content/uploads/2024/09/xampp-folder-768x643.png 768w" sizes="(max-width: 1004px) 100vw, 1004px" /></figure>



<p>言語を選べますが英語とドイツ語のみです。恐らくこのままでいいと思いますのでNextを押します。その後インストールが始まります。</p>



<figure class="wp-block-image size-full is-resized"><img loading="lazy" decoding="async" width="1004" height="840" src="https://code-ch.com/wp-content/uploads/2024/09/xampp-language.png" alt="" class="wp-image-493" style="width:600px" srcset="https://code-ch.com/wp-content/uploads/2024/09/xampp-language.png 1004w, https://code-ch.com/wp-content/uploads/2024/09/xampp-language-300x251.png 300w, https://code-ch.com/wp-content/uploads/2024/09/xampp-language-768x643.png 768w" sizes="(max-width: 1004px) 100vw, 1004px" /></figure>



<figure class="wp-block-image size-full is-resized"><img loading="lazy" decoding="async" width="1004" height="840" src="https://code-ch.com/wp-content/uploads/2024/09/xampp-ready.png" alt="" class="wp-image-494" style="width:600px" srcset="https://code-ch.com/wp-content/uploads/2024/09/xampp-ready.png 1004w, https://code-ch.com/wp-content/uploads/2024/09/xampp-ready-300x251.png 300w, https://code-ch.com/wp-content/uploads/2024/09/xampp-ready-768x643.png 768w" sizes="(max-width: 1004px) 100vw, 1004px" /></figure>



<p>インストール完了です。Finishでダイアログを閉じます。</p>



<figure class="wp-block-image size-full is-resized"><img loading="lazy" decoding="async" width="1004" height="840" src="https://code-ch.com/wp-content/uploads/2024/09/xampp-complete.png" alt="" class="wp-image-495" style="width:600px" srcset="https://code-ch.com/wp-content/uploads/2024/09/xampp-complete.png 1004w, https://code-ch.com/wp-content/uploads/2024/09/xampp-complete-300x251.png 300w, https://code-ch.com/wp-content/uploads/2024/09/xampp-complete-768x643.png 768w" sizes="(max-width: 1004px) 100vw, 1004px" /></figure>



<h2 class="wp-block-heading">PHPスクリプトの作成</h2>



<p>インストールしたxamppフォルダ直下にある<span class="marker-under-red">htdocs</span>フォルダにスクリプトを格納します。</p>



<figure class="wp-block-image size-large is-resized"><img loading="lazy" decoding="async" width="1024" height="597" src="https://code-ch.com/wp-content/uploads/2024/09/xampp-htdocs-1024x597.png" alt="" class="wp-image-499" style="width:600px" srcset="https://code-ch.com/wp-content/uploads/2024/09/xampp-htdocs-1024x597.png 1024w, https://code-ch.com/wp-content/uploads/2024/09/xampp-htdocs-300x175.png 300w, https://code-ch.com/wp-content/uploads/2024/09/xampp-htdocs-768x448.png 768w, https://code-ch.com/wp-content/uploads/2024/09/xampp-htdocs-1536x895.png 1536w, https://code-ch.com/wp-content/uploads/2024/09/xampp-htdocs.png 1802w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<figure class="wp-block-image size-large is-resized"><img loading="lazy" decoding="async" width="1024" height="585" src="https://code-ch.com/wp-content/uploads/2024/09/xampp-htdocs-files-1024x585.png" alt="" class="wp-image-500" style="width:600px" srcset="https://code-ch.com/wp-content/uploads/2024/09/xampp-htdocs-files-1024x585.png 1024w, https://code-ch.com/wp-content/uploads/2024/09/xampp-htdocs-files-300x171.png 300w, https://code-ch.com/wp-content/uploads/2024/09/xampp-htdocs-files-768x439.png 768w, https://code-ch.com/wp-content/uploads/2024/09/xampp-htdocs-files-1536x877.png 1536w, https://code-ch.com/wp-content/uploads/2024/09/xampp-htdocs-files-120x68.png 120w, https://code-ch.com/wp-content/uploads/2024/09/xampp-htdocs-files-160x90.png 160w, https://code-ch.com/wp-content/uploads/2024/09/xampp-htdocs-files.png 1842w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>上記htdocsフォルダ内にphpファイルを配置すると、Webブラウザのlocalhostからアクセスできるようになります。階層を作ってサブディレクトリを切ることも可能です。</p>



<p>今回はhtdocsにphp-demoフォルダを作成、その中にphpファイルを格納します。</p>



<p>xampp<br>└htdocs<br>　└php-demo<br>　　└index.php</p>



<figure class="wp-block-image size-large is-resized"><img loading="lazy" decoding="async" width="1024" height="359" src="https://code-ch.com/wp-content/uploads/2024/09/image-1024x359.png" alt="" class="wp-image-501" style="width:600px" srcset="https://code-ch.com/wp-content/uploads/2024/09/image-1024x359.png 1024w, https://code-ch.com/wp-content/uploads/2024/09/image-300x105.png 300w, https://code-ch.com/wp-content/uploads/2024/09/image-768x270.png 768w, https://code-ch.com/wp-content/uploads/2024/09/image-1536x539.png 1536w, https://code-ch.com/wp-content/uploads/2024/09/image.png 1818w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>index.phpの中身は以下のようになります。VSCodeやテキストエディタなどで作成します。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP"><code>&lt;?php
echo &#39;Hello world!&#39;;
?&gt;</code></pre></div>



<h2 class="wp-block-heading">PHPスクリプトの実行</h2>



<p>ブラウザでPHPを実行するには、ローカル環境にWebサーバを立てる必要があります。XAMPPに同梱されている、WebサーバのApacheを使用します。</p>



<p>XAMPP Control Panelを開きます。</p>



<p>今回使用するのはApacheだけなので、Apacheの列にあるStartを押下します。</p>



<figure class="wp-block-image size-large is-resized"><img loading="lazy" decoding="async" width="1024" height="665" src="https://code-ch.com/wp-content/uploads/2024/09/xampp-panel-1024x665.png" alt="" class="wp-image-504" style="width:600px" srcset="https://code-ch.com/wp-content/uploads/2024/09/xampp-panel-1024x665.png 1024w, https://code-ch.com/wp-content/uploads/2024/09/xampp-panel-300x195.png 300w, https://code-ch.com/wp-content/uploads/2024/09/xampp-panel-768x499.png 768w, https://code-ch.com/wp-content/uploads/2024/09/xampp-panel.png 1336w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<figure class="wp-block-image size-large is-resized"><img loading="lazy" decoding="async" width="1024" height="665" src="https://code-ch.com/wp-content/uploads/2024/09/image-1-1024x665.png" alt="" class="wp-image-505" style="width:600px" srcset="https://code-ch.com/wp-content/uploads/2024/09/image-1-1024x665.png 1024w, https://code-ch.com/wp-content/uploads/2024/09/image-1-300x195.png 300w, https://code-ch.com/wp-content/uploads/2024/09/image-1-768x499.png 768w, https://code-ch.com/wp-content/uploads/2024/09/image-1.png 1336w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>これでローカル環境にサーバが立ち上がりました。ブラウザでlocalhost/php-demoにアクセスしてみましょう。</p>



<figure class="wp-block-image size-large is-resized"><img loading="lazy" decoding="async" width="1024" height="606" src="https://code-ch.com/wp-content/uploads/2024/09/image-2-1024x606.png" alt="" class="wp-image-507" style="width:600px" srcset="https://code-ch.com/wp-content/uploads/2024/09/image-2-1024x606.png 1024w, https://code-ch.com/wp-content/uploads/2024/09/image-2-300x178.png 300w, https://code-ch.com/wp-content/uploads/2024/09/image-2-768x454.png 768w, https://code-ch.com/wp-content/uploads/2024/09/image-2-1536x909.png 1536w, https://code-ch.com/wp-content/uploads/2024/09/image-2.png 1920w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>上記のように表示されれば成功です！</p>



<p>最後に、Apacheを忘れずにstopしましょう。コントロールパネルを閉じただけではstopしてくれないので注意。</p>



<figure class="wp-block-image size-large is-resized"><img loading="lazy" decoding="async" width="1024" height="665" src="https://code-ch.com/wp-content/uploads/2024/09/image-3-1024x665.png" alt="" class="wp-image-508" style="width:600px" srcset="https://code-ch.com/wp-content/uploads/2024/09/image-3-1024x665.png 1024w, https://code-ch.com/wp-content/uploads/2024/09/image-3-300x195.png 300w, https://code-ch.com/wp-content/uploads/2024/09/image-3-768x499.png 768w, https://code-ch.com/wp-content/uploads/2024/09/image-3.png 1336w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>これで環境構築は完了です。お疲れさまでした！</p>
]]></content:encoded>
					
					<wfw:commentRss>https://code-ch.com/php-xampp-install/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【PHP】for文の基本と実用例：使い方や記述方法を解説</title>
		<link>https://code-ch.com/php-for/</link>
					<comments>https://code-ch.com/php-for/#respond</comments>
		
		<dc:creator><![CDATA[TJR]]></dc:creator>
		<pubDate>Sat, 07 Sep 2024 13:00:47 +0000</pubDate>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[初学者向け]]></category>
		<category><![CDATA[制御構造]]></category>
		<guid isPermaLink="false">https://code-ch.com/?p=440</guid>

					<description><![CDATA[for文はプログラムに欠かせない制御構文の一つです。for文は特定のコードを繰り返し実行できるので、効率的なコードが実装できます。この記事では、PHPのfor文についての基本的な使い方から実用的な例まで解説していきます。 [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>for文はプログラムに欠かせない制御構文の一つです。for文は特定のコードを繰り返し実行できるので、効率的なコードが実装できます。この記事では、PHPのfor文についての基本的な使い方から実用的な例まで解説していきます。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="576" src="https://code-ch.com/wp-content/uploads/2024/09/変数のコピー-3-1024x576.jpg" alt="" class="wp-image-481" srcset="https://code-ch.com/wp-content/uploads/2024/09/変数のコピー-3-1024x576.jpg 1024w, https://code-ch.com/wp-content/uploads/2024/09/変数のコピー-3-300x169.jpg 300w, https://code-ch.com/wp-content/uploads/2024/09/変数のコピー-3-768x432.jpg 768w, https://code-ch.com/wp-content/uploads/2024/09/変数のコピー-3-1536x864.jpg 1536w, https://code-ch.com/wp-content/uploads/2024/09/変数のコピー-3-120x68.jpg 120w, https://code-ch.com/wp-content/uploads/2024/09/変数のコピー-3-160x90.jpg 160w, https://code-ch.com/wp-content/uploads/2024/09/変数のコピー-3-320x180.jpg 320w, https://code-ch.com/wp-content/uploads/2024/09/変数のコピー-3.jpg 1920w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<h2 class="wp-block-heading">for文の基本構造</h2>



<p>PHPのfor文の基本構造は以下のようになります。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP"><code>for (初期化; 条件; 増減) {
    // 繰り返し処理するコード
}</code></pre></div>



<p>この構造は、以下の3つの部分から成り立っています。</p>



<ol class="wp-block-list">
<li><strong>初期化</strong>: ループの最初に一度だけ実行される部分です。通常はループカウンタの初期値を設定します。</li>



<li><strong>条件</strong>: ループを続けるかどうかを決定する条件です。条件がtrueである限り、ループが続きます。</li>



<li><strong>増減</strong>: 各ループの最後に実行され、通常はループカウンタの値を増減させます。</li>
</ol>



<h2 class="wp-block-heading">記述例</h2>



<p>では、具体的な例を見てみましょう。以下のコードは、1から10までの数字を順番に表示するfor文です。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP"><code>for ($i = 1; $i &lt;= 10; $i++) {
    echo $i . &quot; &quot;;
}</code></pre></div>



<div class="wp-block-cocoon-blocks-caption-box-1 caption-box block-box has-border-color has-cyan-bluish-gray-border-color not-nested-style cocoon-block-caption-box" style="--cocoon-custom-border-color:#abb8c3"><div class="caption-box-label block-box-label box-label"><span class="caption-box-label-text block-box-label-text box-label-text">出力</span></div><div class="caption-box-content block-box-content box-content">
<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>1 2 3 4 5 6 7 8 9 10</code></pre></div>
</div></div>



<p>このコードでは、変数$iが1から始まり、10以下の間は繰り返し処理を行います。各ループごとに$iの値が1ずつ増え、その値が画面に表示されます。</p>



<h2 class="wp-block-heading">配列とfor文の組み合わせ</h2>



<p>for文は配列を扱う際に非常に便利です。例えば、以下のコードは配列内の全ての要素をループして表示します。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP"><code>$fruits = [&quot;Apple&quot;, &quot;Banana&quot;, &quot;Cherry&quot;];

for ($i = 0; $i &lt; count($fruits); $i++) {
    echo $fruits[$i] . &quot; &quot;;
}</code></pre></div>



<div class="wp-block-cocoon-blocks-caption-box-1 caption-box block-box has-border-color has-cyan-bluish-gray-border-color not-nested-style cocoon-block-caption-box" style="--cocoon-custom-border-color:#abb8c3"><div class="caption-box-label block-box-label box-label"><span class="caption-box-label-text block-box-label-text box-label-text">出力</span></div><div class="caption-box-content block-box-content box-content">
<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>Apple Banana Cherry </code></pre></div>
</div></div>



<p>この例では、配列$fruitsの要素数をcount()関数で取得し、ループの条件として使用しています。結果として、配列内のすべての果物の名前が表示されます。</p>



<div class="wp-block-cocoon-blocks-blogcard blogcard-type bct-together">

<a href="https://code-ch.com/array" title="【PHP】配列の基本ガイド: 使い方やメソッドを解説" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img loading="lazy" decoding="async" width="160" height="90" src="https://code-ch.com/wp-content/uploads/2024/05/配列-160x90.jpg" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://code-ch.com/wp-content/uploads/2024/05/配列-160x90.jpg 160w, https://code-ch.com/wp-content/uploads/2024/05/配列-300x169.jpg 300w, https://code-ch.com/wp-content/uploads/2024/05/配列-1024x576.jpg 1024w, https://code-ch.com/wp-content/uploads/2024/05/配列-768x432.jpg 768w, https://code-ch.com/wp-content/uploads/2024/05/配列-1536x864.jpg 1536w, https://code-ch.com/wp-content/uploads/2024/05/配列-120x68.jpg 120w, https://code-ch.com/wp-content/uploads/2024/05/配列-320x180.jpg 320w, https://code-ch.com/wp-content/uploads/2024/05/配列.jpg 1920w" sizes="(max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">【PHP】配列の基本ガイド: 使い方やメソッドを解説</div><div class="blogcard-snippet internal-blogcard-snippet">PHPの配列を分かりやすく解説！配列の宣言、要素の追加・編集・削除など基本的な使い方を網羅しています。</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://code-ch.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">code-ch.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2024.05.04</div></div></div></div></a>
</div>



<h2 class="wp-block-heading">多重ループ</h2>



<p>for文にfor文を内包すると複雑なループを実現できます。</p>



<h3 class="wp-block-heading">九九</h3>



<p>九九の表を出力するプログラムを考えてみます。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP"><code>for($i = 1; $i &lt; 10; $i++) {
    for($j = 1; $j &lt; 10; $j++) {
        echo ($i * $j) . &#39; &#39;;
    }
    echo PHP_EOL; // 改行文字
}</code></pre></div>



<p>掛け算をA×Bとすると、Aは$iで、Bは$jになります。<br>$iと$jは1から始めます。まず$iを1で固定して、$jを1から9まで増分していきます。そしてコード三行目で1×1,1×2&#8230;のように計算して以下のように出力します。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>1 2 3 4 5 6 7 8 9 </code></pre></div>



<p>これが1の段です。次に$iを2に増やして固定、$jを再び1から9まで増分して2×1,2×2&#8230;のように出力します。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>1 2 3 4 5 6 7 8 9 
2 4 6 8 10 12 14 16 18 </code></pre></div>



<p>同様の計算を9の段まで繰り返して九九の表が出力されます。</p>



<div class="wp-block-cocoon-blocks-caption-box-1 caption-box block-box has-border-color has-cyan-bluish-gray-border-color not-nested-style cocoon-block-caption-box" style="--cocoon-custom-border-color:#abb8c3"><div class="caption-box-label block-box-label box-label"><span class="caption-box-label-text block-box-label-text box-label-text">出力</span></div><div class="caption-box-content block-box-content box-content">
<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>1 2 3 4 5 6 7 8 9 
2 4 6 8 10 12 14 16 18 
3 6 9 12 15 18 21 24 27 
4 8 12 16 20 24 28 32 36 
5 10 15 20 25 30 35 40 45 
6 12 18 24 30 36 42 48 54 
7 14 21 28 35 42 49 56 63 
8 16 24 32 40 48 56 64 72 
9 18 27 36 45 54 63 72 81 </code></pre></div>
</div></div>



<h2 class="wp-block-heading">break文とcontinue文</h2>



<h3 class="wp-block-heading">break</h3>



<p>for文のループを途中で中止したいときには、break文を使います。下記のコードでは、$iを0から9までカウントを進める条件になっていますが、$iが5のときにforループを中止して強制的にブロックを抜けます。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP"><code>for ($i = 0; $i &lt; 10; $i++) {
    if ($i == 5) {
        break;
    }
    echo $i . &quot; &quot;;
}

// 出力: 0 1 2 3 4</code></pre></div>



<h3 class="wp-block-heading">continue</h3>



<p>現在のループ処理を飛ばしてカウントを進めたい場合、continue文を使います。下記のコードでは、$iが5になったときに現在のループ処理を飛ばして次のループ処理に進みます。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP"><code>for ($i = 0; $i &lt; 10; $i++) {
    if ($i == 5) {
        continue;
    }
    echo $i . &quot; &quot;;
}

// 出力: 0 1 2 3 4 6 7 8 9</code></pre></div>



<div class="wp-block-cocoon-blocks-tab-caption-box-1 tab-caption-box block-box has-border-color has-light-blue-border-color not-nested-style cocoon-block-tab-caption-box" style="--cocoon-custom-border-color:#2ca9e1"><div class="tab-caption-box-label block-box-label box-label fab-graduation-cap"><span class="tab-caption-box-label-text block-box-label-text box-label-text">多重ループのbreakとcontinue</span></div><div class="tab-caption-box-content block-box-content box-content">
<p>多重ループの中からbreakやcontinueしようとすると、一段階だけしかループを抜けられません。一気にループを抜けたい場合は <span class="marker-under-red">break 2;</span> や <span class="marker-under-red">continue 2;</span> のようにして、ループを抜ける段数を指定することができます。</p>
</div></div>



<h2 class="wp-block-heading">まとめ</h2>



<p>for文は配列の処理を行う上でほぼ必須の制御構造です。既存のコードを読む際にも頻出するので、スムーズにコードを読み込むためにも基礎をおさえておきましょう。</p>



<p></p>
]]></content:encoded>
					
					<wfw:commentRss>https://code-ch.com/php-for/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【PHP】switch文の基本ガイド：書き方や使用例を解説</title>
		<link>https://code-ch.com/php-switch/</link>
					<comments>https://code-ch.com/php-switch/#respond</comments>
		
		<dc:creator><![CDATA[TJR]]></dc:creator>
		<pubDate>Mon, 02 Sep 2024 09:46:19 +0000</pubDate>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[初学者向け]]></category>
		<category><![CDATA[制御構造]]></category>
		<guid isPermaLink="false">https://code-ch.com/?p=431</guid>

					<description><![CDATA[PHPにおける条件分岐にはifやelseなどの構文がよく使われますが、複数の値に対して同じ変数をチェックする場合にはswitch文が便利です。この記事では、PHPのswitch文について詳しく見ていきます。 switch [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>PHPにおける条件分岐にはifやelseなどの構文がよく使われますが、複数の値に対して同じ変数をチェックする場合にはswitch文が便利です。この記事では、PHPのswitch文について詳しく見ていきます。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="576" src="https://code-ch.com/wp-content/uploads/2024/09/変数のコピー-2-1024x576.jpg" alt="" class="wp-image-432" srcset="https://code-ch.com/wp-content/uploads/2024/09/変数のコピー-2-1024x576.jpg 1024w, https://code-ch.com/wp-content/uploads/2024/09/変数のコピー-2-300x169.jpg 300w, https://code-ch.com/wp-content/uploads/2024/09/変数のコピー-2-768x432.jpg 768w, https://code-ch.com/wp-content/uploads/2024/09/変数のコピー-2-1536x864.jpg 1536w, https://code-ch.com/wp-content/uploads/2024/09/変数のコピー-2-120x68.jpg 120w, https://code-ch.com/wp-content/uploads/2024/09/変数のコピー-2-160x90.jpg 160w, https://code-ch.com/wp-content/uploads/2024/09/変数のコピー-2-320x180.jpg 320w, https://code-ch.com/wp-content/uploads/2024/09/変数のコピー-2.jpg 1920w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<h2 class="wp-block-heading">switch文の基本構文</h2>



<p>switch文は、特定の変数の値に基づいて実行するコードブロックを決定します。以下が基本的な構文です。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP"><code>switch (変数) {
    case 値1:
        // 処理1
        break;
    case 値2:
        // 処理2
        break;
    // caseはいくつでも追加可能
    default:
        // どのcaseにも一致しない場合の処理
        break;
}
</code></pre></div>



<p>流れのフローチャートは以下のようになります。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="576" src="https://code-ch.com/wp-content/uploads/2024/09/let-i-0_20240902_084220_0000-1024x576.png" alt="" class="wp-image-436" srcset="https://code-ch.com/wp-content/uploads/2024/09/let-i-0_20240902_084220_0000-1024x576.png 1024w, https://code-ch.com/wp-content/uploads/2024/09/let-i-0_20240902_084220_0000-300x169.png 300w, https://code-ch.com/wp-content/uploads/2024/09/let-i-0_20240902_084220_0000-768x432.png 768w, https://code-ch.com/wp-content/uploads/2024/09/let-i-0_20240902_084220_0000-1536x864.png 1536w, https://code-ch.com/wp-content/uploads/2024/09/let-i-0_20240902_084220_0000-120x68.png 120w, https://code-ch.com/wp-content/uploads/2024/09/let-i-0_20240902_084220_0000-160x90.png 160w, https://code-ch.com/wp-content/uploads/2024/09/let-i-0_20240902_084220_0000-320x180.png 320w, https://code-ch.com/wp-content/uploads/2024/09/let-i-0_20240902_084220_0000.png 1920w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<h2 class="wp-block-heading">switch文の具体例</h2>



<p>例えば、ユーザーが選択した曜日に応じてメッセージを表示するスクリプトを考えてみましょう。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP"><code>$day = &quot;月曜日&quot;;

switch ($day) {
    case &quot;月曜日&quot;:
        echo &quot;今日は月曜日です。&quot;;
        break;
    case &quot;火曜日&quot;:
        echo &quot;今日は火曜日です。&quot;;
        break;
    case &quot;水曜日&quot;:
        echo &quot;今日は水曜日です。&quot;;
        break;
    default:
        echo &quot;不明な曜日です。&quot;;
        break;
}
</code></pre></div>



<p>このスクリプトでは、$day変数の値に応じて、異なるメッセージが表示されます。defaultは、どのcaseにも一致しなかった場合の処理を定義します。</p>



<h2 class="wp-block-heading">break文の重要性</h2>



<p>switch文で重要なのがbreak文です。break文を使わないと、条件が一致した後も次のcaseが実行されてしまう「フォールスルー」という現象が発生します。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP"><code>$day = &quot;火曜日&quot;;

switch ($day) {
    case &quot;月曜日&quot;:
        echo &quot;今日は月曜日です。&quot;;
    case &quot;火曜日&quot;:
        echo &quot;今日は火曜日です。&quot;;
    case &quot;水曜日&quot;:
        echo &quot;今日は水曜日です。&quot;;
    default:
        echo &quot;不明な曜日です。&quot;;
}
</code></pre></div>



<p>上記の例では、break文がないため、火曜日のケースに一致した後、すべてのケースが実行されてしまいます。</p>



<p><span class="bold">出力</span></p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>今日は火曜日です。今日は水曜日です。不明な曜日です。</code></pre></div>



<p>これを防ぐために、各caseの最後にbreak文を忘れずに追加しましょう。</p>



<h2 class="wp-block-heading">switch文の活用法</h2>



<p>switch文は、複数の選択肢がある場合にコードを読みやすく整理するのに非常に役立ちます。たとえば、数値範囲や文字列の一致をチェックする際に、複数のif-else文よりもコンパクトにまとめることができます。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP"><code>$grade = &quot;B&quot;;

switch ($grade) {
    case &quot;A&quot;:
        echo &quot;優秀です！&quot;;
        break;
    case &quot;B&quot;:
        echo &quot;よくできました！&quot;;
        break;
    case &quot;C&quot;:
        echo &quot;合格です。&quot;;
        break;
    default:
        echo &quot;再試験が必要です。&quot;;
        break;
}</code></pre></div>



<h2 class="wp-block-heading">まとめ</h2>



<p>switch文は、条件分岐を効率的に行うための非常に便利な構文です。特に、特定の変数が複数の値のいずれかに一致する場合に、コードをシンプルかつ読みやすく保つのに役立ちます。ぜひ実際の開発に活用してみてください。</p>



<p></p>
]]></content:encoded>
					
					<wfw:commentRss>https://code-ch.com/php-switch/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【PHP】if文の基本ガイド：書き方や条件式について解説</title>
		<link>https://code-ch.com/if-2/</link>
					<comments>https://code-ch.com/if-2/#respond</comments>
		
		<dc:creator><![CDATA[TJR]]></dc:creator>
		<pubDate>Wed, 28 Aug 2024 12:07:55 +0000</pubDate>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[初学者向け]]></category>
		<category><![CDATA[制御構造]]></category>
		<guid isPermaLink="false">https://code-ch.com/?p=401</guid>

					<description><![CDATA[PHPでは、条件によるコードの実行を制御するためにif文を頻繁に使用します。この記事では、PHPのif文の基本的な構文と、使い方について詳しく説明します。 if文の基本構文 PHPのif文は、指定した条件が真（true） [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>PHPでは、条件によるコードの実行を制御するためにif文を頻繁に使用します。この記事では、PHPのif文の基本的な構文と、使い方について詳しく説明します。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="576" src="https://code-ch.com/wp-content/uploads/2024/08/変数のコピー-1-1024x576.jpg" alt="" class="wp-image-413" srcset="https://code-ch.com/wp-content/uploads/2024/08/変数のコピー-1-1024x576.jpg 1024w, https://code-ch.com/wp-content/uploads/2024/08/変数のコピー-1-300x169.jpg 300w, https://code-ch.com/wp-content/uploads/2024/08/変数のコピー-1-768x432.jpg 768w, https://code-ch.com/wp-content/uploads/2024/08/変数のコピー-1-1536x864.jpg 1536w, https://code-ch.com/wp-content/uploads/2024/08/変数のコピー-1-120x68.jpg 120w, https://code-ch.com/wp-content/uploads/2024/08/変数のコピー-1-160x90.jpg 160w, https://code-ch.com/wp-content/uploads/2024/08/変数のコピー-1-320x180.jpg 320w, https://code-ch.com/wp-content/uploads/2024/08/変数のコピー-1.jpg 1920w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<h2 class="wp-block-heading">if文の基本構文</h2>



<p>PHPのif文は、指定した条件が真（true）の場合に、特定のコードブロックを実行するために使用されます。基本的な構文は以下のようになります。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP"><code>if (条件) {
    // 条件が真の場合に実行されるコード
}</code></pre></div>



<div class="wp-block-cocoon-blocks-tab-box-1 blank-box bb-tab bb-point block-box has-border-color has-blue-border-color">
<ul class="wp-block-list">
<li>条件：評価される論理式。真または偽（trueまたはfalse）を返す必要がある。</li>



<li>コードブロック：条件が真であるときに実行されるPHPコード。</li>
</ul>
</div>



<h2 class="wp-block-heading">基本的な例</h2>



<p>以下は、if文の基本的な使用例です。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP"><code>$age = 18;

if ($age &gt;= 18) {
    echo &quot;成人です。&quot;;
}</code></pre></div>



<p>この例では、変数 $age が18以上である場合に、「成人です。」というメッセージが表示されます。 $age >= 18 の&#8217;>=&#8217;は、左辺の値が右辺の値以上のとき真、という条件を表しています。$age が18未満の場合は何も表示されません。</p>



<h3 class="wp-block-heading">if-else構文</h3>



<p>if文にelseを追加することで、条件が偽（false）の場合に実行されるコードを指定できます。構文は次の通りです。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP"><code>if (条件) {
    // 条件が真の場合に実行されるコード
} else {
    // 条件が偽の場合に実行されるコード
}</code></pre></div>



<p><br><strong>if-elseの例</strong></p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>$age = 16;

if ($age &gt;= 18) {
    echo &quot;成人です。&quot;;
} else {
    echo &quot;未成年です。&quot;;
}</code></pre></div>



<p>この例では、$ageが18以上であれば「成人です。」と表示され、それ以外の場合は「未成年です。」と表示されます。</p>



<h3 class="wp-block-heading">if-elseif-else構文</h3>



<p>複数の条件を評価する場合は、if-elseif-else構文を使用します。複数の条件を順に評価し、それに応じて異なるコードを実行できます。構文は次の通りです。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP"><code>if (条件1) {
    // 条件1が真の場合に実行されるコード
} elseif (条件2) {
    // 条件2が真の場合に実行されるコード
} else {
    // 条件1および条件2が偽の場合に実行されるコード
}</code></pre></div>



<p><strong>if-elseif-elseの例</strong></p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP"><code>$score = 85;

if ($score &gt;= 90) {
    echo &quot;優秀です。&quot;;
} elseif ($score &gt;= 70) {
    echo &quot;合格です。&quot;;
} else {
    echo &quot;不合格です。&quot;;
}</code></pre></div>



<p>この例では、スコアに応じて異なるメッセージを表示します。スコアが90以上の場合は「優秀です。」、70以上90未満の場合は「合格です。」、それ以外の場合は「不合格です。」と出力されます。</p>



<h2 class="wp-block-heading">比較演算子の使い方</h2>



<p>&#8216;>=&#8217;以外にも様々な条件判定があります。これらを<span class="marker-under">比較演算子</span>と呼びます。主要な比較演算子は以下の通りです。</p>



<div class="wp-block-cocoon-blocks-tab-box-1 blank-box bb-tab bb-check block-box has-border-color has-key-color-border-color">
<ul class="wp-block-list">
<li><strong>等しい</strong>： ==</li>



<li><strong>等しくない</strong>： !=</li>



<li><strong>より大きい</strong>： ></li>



<li><strong>より小さい</strong>： &lt;</li>



<li><strong>以上</strong>： >=</li>



<li><strong>以下</strong>： &lt;=</li>
</ul>
</div>



<p>これらの演算子を組み合わせて複雑な条件を設定します。</p>



<h3 class="wp-block-heading">比較演算子を使った例</h3>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP"><code>$score = 85;
$membership = &#39;gold&#39;;

// スコアが80以上かつメンバーシップが&#39;gold&#39;の場合

if ($score &gt;= 80) {
    if ($membership == &#39;gold&#39;) {
        echo &quot;条件を全て満たしています。&quot;;
    } else {
        echo &quot;メンバーシップが条件を満たしていません。&quot;;
    }
} else {
    echo &quot;スコアが条件を満たしていません。&quot;;
}</code></pre></div>



<p>この例では、スコアが80点以上かつ、メンバーシップが&#8217;gold&#8217;の場合に&#8217;条件を全て満たしています。&#8217;と表示します。</p>



<h2 class="wp-block-heading">if文で複雑な条件を扱う方法</h2>



<p>論理演算子や比較演算子を駆使することで、複雑な条件分岐を実現できます。</p>



<h3 class="wp-block-heading">論理演算子を使った複雑な条件</h3>



<p>複雑な条件を指定するためには、<span class="marker-under">論理演算子</span>を使用します。主要な論理演算子は以下の通りです。</p>



<div class="wp-block-cocoon-blocks-tab-box-1 blank-box bb-tab bb-check block-box has-border-color has-key-color-border-color">
<ul class="wp-block-list">
<li>AND（論理積）：&amp;&amp;<br>A &amp;&amp; B（AかつB）</li>



<li>OR（論理和）：||<br>A || B（AまたはB）</li>



<li>NOT（論理否定）：!<br>!A（Aではない）</li>
</ul>
</div>



<p>これらの演算子を使用することで、複数の条件を組み合わせることができます。</p>



<h3 class="wp-block-heading">論理条件の基本構文</h3>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP"><code>if (条件1 && 条件2) {
    // 条件1かつ条件2が真の場合に実行されるコード
}

if (条件1 || 条件2) {
    // 条件1または条件2が真の場合に実行されるコード
}

if (!条件) {
    // 条件が偽の場合に実行されるコード
}</code></pre></div>



<h3 class="wp-block-heading">複雑な条件の例</h3>



<p>以下の例では、複数の条件を組み合わせて条件分岐を実装します。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP"><code>$age = 25;
$member = false;

if ($age &gt;= 18 && $member) {
    echo &quot;会員料金が適用されます。&quot;;
} elseif ($age &gt;= 18 && !$member) {
    echo &quot;一般料金が適用されます。&quot;;
} elseif ($age &lt; 18) {
    echo &quot;子供料金が適用されます。&quot;;
} else {
    echo &quot;ご利用いただけません。&quot;;
}</code></pre></div>



<p>この例では、以下のように条件を組み合わせています。</p>



<div class="wp-block-cocoon-blocks-tab-box-1 blank-box bb-tab bb-point block-box has-border-color has-light-blue-border-color">
<ul class="wp-block-list">
<li>$age >= 18 &amp;&amp; $member： 成人で、会員の場合</li>



<li>$age >= 18 &amp;&amp;  !$member： 成人だが、会員でない場合</li>



<li>$age &lt; 18： 成人未満の場合</li>
</ul>
</div>



<h3 class="wp-block-heading">複数の条件式をグループ化する</h3>



<p>複雑な条件式を扱う際には、条件式を括弧'()&#8217;でグループ化して優先順位を明確にすることが重要です。括弧で囲ったグループから条件判定されるので、条件式の評価が意図した通りに行われます。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP"><code>$temperature = 30;
$rainy = false;
$holiday = true;

if ($holiday || ($temperature &gt;= 18 && $temperature &lt; 28)) {
    echo &quot;アウトドア活動に最適です。&quot;;
} else {
    echo &quot;屋内で過ごしましょう。&quot;;
}</code></pre></div>



<p>この例では、休日または、気温が18度以上かつ28度未満のときに、&#8217;アウトドア活動に最適です。&#8217;と出力します。</p>



<h2 class="wp-block-heading">まとめ</h2>



<p>PHPで条件分岐を扱うとき、if文と論理演算子、比較演算子を上手く使いこなすととても便利です。これらを組み合わせると、複雑な条件でもすっきりと表現できるようになります。</p>



<p>こういったテクニックを身につけると、PHPのコードがぐっとスマートになります。効率的で柔軟性のあるプログラムが書けるようになるので、複雑な処理も難なくこなせるようになります。これらの方法をマスターすれば、コードの品質も上がって、プログラミングの生産性も上がるはずです。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://code-ch.com/if-2/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【PHP】連想配列の基本ガイド:使い方や記述方法について解説</title>
		<link>https://code-ch.com/associative-array/</link>
					<comments>https://code-ch.com/associative-array/#respond</comments>
		
		<dc:creator><![CDATA[TJR]]></dc:creator>
		<pubDate>Sun, 25 Aug 2024 10:13:01 +0000</pubDate>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[初学者向け]]></category>
		<category><![CDATA[配列]]></category>
		<guid isPermaLink="false">https://code-ch.com/?p=379</guid>

					<description><![CDATA[PHPには通常の配列の他に、連想配列があります。連想配列は、キーとして文字列や整数を使い、そのキーに関連付けられた値を格納します。キーと値のペアでデータを管理できるため、データへのアクセスが直感的に行えます。この記事では [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>PHPには通常の配列の他に、連想配列があります。連想配列は、キーとして文字列や整数を使い、そのキーに関連付けられた値を格納します。キーと値のペアでデータを管理できるため、データへのアクセスが直感的に行えます。この記事ではそんな連想配列について解説していきます。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="576" src="https://code-ch.com/wp-content/uploads/2024/08/変数のコピー-1024x576.jpg" alt="" class="wp-image-391" srcset="https://code-ch.com/wp-content/uploads/2024/08/変数のコピー-1024x576.jpg 1024w, https://code-ch.com/wp-content/uploads/2024/08/変数のコピー-300x169.jpg 300w, https://code-ch.com/wp-content/uploads/2024/08/変数のコピー-768x432.jpg 768w, https://code-ch.com/wp-content/uploads/2024/08/変数のコピー-1536x864.jpg 1536w, https://code-ch.com/wp-content/uploads/2024/08/変数のコピー-120x68.jpg 120w, https://code-ch.com/wp-content/uploads/2024/08/変数のコピー-160x90.jpg 160w, https://code-ch.com/wp-content/uploads/2024/08/変数のコピー-320x180.jpg 320w, https://code-ch.com/wp-content/uploads/2024/08/変数のコピー.jpg 1920w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<h2 class="wp-block-heading">連想配列とは</h2>



<p>連想配列は、<span class="marker-under">キーと値</span>をペアで管理します。キーを指定して、値にアクセスします。宣言の構文は以下のようになります。</p>



<div class="wp-block-cocoon-blocks-sticky-box blank-box block-box sticky st-blue">
<p>array(キー1 => 値1, キー2 => 値2, &#8230;)</p>
</div>



<p>または</p>



<div class="wp-block-cocoon-blocks-sticky-box blank-box block-box sticky st-blue">
<p>[キー1 =&gt; 値1, キー2 =&gt; 値2, &#8230;]</p>
</div>



<p>通常の配列と同じく宣言には[]を使います。ただし、各要素の形式は&#8221;キー =&gt; 値&#8221;になります。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP"><code>$count_per_class = [&#39;1A&#39; =&gt; 30, &#39;1B&#39; =&gt; 32, &#39;1C&#39; =&gt; 34];</code></pre></div>



<p>上記の例では、学校のクラスの名前（キー）と人数（値）をペアにした連想配列を定義しています。</p>



<h2 class="wp-block-heading">値の取得</h2>



<p>インデックスにキーを指定すると値を取得できます。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP"><code>$count_per_class = [&#39;1A&#39; =&gt; 30, &#39;1B&#39; =&gt; 32, &#39;1C&#39; =&gt; 34];
print $count_per_class[&#39;1A&#39;];</code></pre></div>



<p><span class="bold">出力</span></p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>30</code></pre></div>



<p>キーに&#8217;1A&#8217;を指定したので、対応した値である30が取得できました。</p>



<h3 class="wp-block-heading">キーの存在確認</h3>



<p>存在しないキーを指定すると警告が表示されます。警告を回避するには、キーが存在するかどうか確認する必要があります。</p>



<p>配列にキーがあるか調べるには<span class="marker-under">array_key_exists関数</span>を使います。</p>



<div class="wp-block-cocoon-blocks-sticky-box blank-box block-box sticky st-blue">
<p>array_key_exists(キー, 配列)</p>
</div>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP"><code>$count_per_class = [&#39;1A&#39; =&gt; 30, &#39;1B&#39; =&gt; 32, &#39;1C&#39; =&gt; 34];
if(array_key_exists(&#39;1A&#39;, $count_per_class)) {
    print $count_per_class[&#39;1A&#39;];
}</code></pre></div>



<p>上記の例では、配列に&#8217;1A&#8217;のキーがあるか確認して、見つかった場合にのみ&#8217;1A&#8217;に対応する値を出力しています。</p>



<h2 class="wp-block-heading">ペアの追加</h2>



<p>キーと値のペアを追加したいときは以下のように記述します。</p>



<div class="wp-block-cocoon-blocks-sticky-box blank-box block-box sticky st-blue">
<p>連想配列[キー] = 値</p>
</div>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP"><code>$count_per_class = [&#39;1A&#39; =&gt; 30, &#39;1B&#39; =&gt; 32, &#39;1C&#39; =&gt; 34];
$count_per_class[&#39;2A&#39;] = 28;
var_export($count_per_class);</code></pre></div>



<p><span class="bold">出力</span></p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>array (
  &#39;1A&#39; =&gt; 30,
  &#39;1B&#39; =&gt; 32,
  &#39;1C&#39; =&gt; 34,
  &#39;2A&#39; =&gt; 28,
)</code></pre></div>



<h2 class="wp-block-heading">値の上書き</h2>



<p>値を上書きしたいときは、追加のときと同様以下のように記述します。</p>



<div class="wp-block-cocoon-blocks-sticky-box blank-box block-box sticky st-blue">
<p>連想配列[キー] = 値</p>
</div>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP"><code>$count_per_class = [&#39;1A&#39; =&gt; 30, &#39;1B&#39; =&gt; 32, &#39;1C&#39; =&gt; 34];
$count_per_class[&#39;1A&#39;] = 28;
var_export($count_per_class);</code></pre></div>



<p><span class="bold">出力</span></p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>array (
  &#39;1A&#39; =&gt; 28,
  &#39;1B&#39; =&gt; 32,
  &#39;1C&#39; =&gt; 34,
)</code></pre></div>



<p>&#8216;1A&#8217;に対応した値を上書きしています。</p>



<h2 class="wp-block-heading">ペアの削除</h2>



<p>ペアを削除する際は、<span class="marker-under">unset関数</span>を使います。</p>



<div class="wp-block-cocoon-blocks-sticky-box blank-box block-box sticky st-blue">
<p>unset(配列[キー])</p>
</div>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP"><code>$count_per_class = [&#39;1A&#39; =&gt; 30, &#39;1B&#39; =&gt; 32, &#39;1C&#39; =&gt; 34];
unset($count_per_class[&#39;1A&#39;]);
var_export($count_per_class);</code></pre></div>



<p><strong>出力</strong></p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>array (
  &#39;1B&#39; =&gt; 32,
  &#39;1C&#39; =&gt; 34,
)</code></pre></div>



<h2 class="wp-block-heading">便利な関数</h2>



<h3 class="wp-block-heading">全ての値の取得</h3>



<p>全ての値を取得するときは<span class="marker-under">array_values関数</span>を使います。</p>



<div class="wp-block-cocoon-blocks-sticky-box blank-box block-box sticky st-blue">
<p>array_values(配列)</p>
</div>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP"><code>$count_per_class = [&#39;1A&#39; =&gt; 30, &#39;1B&#39; =&gt; 32, &#39;1C&#39; =&gt; 34];
$values = array_values($count_per_class);
var_export($values);</code></pre></div>



<p><span class="bold">出力</span></p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>array (
  0 =&gt; 30,
  1 =&gt; 32,
  2 =&gt; 34,
)</code></pre></div>



<h3 class="wp-block-heading">全てのキーの取得</h3>



<p>全てのキーを取得するときは<span class="marker-under">array_keys関数</span>を使います。</p>



<div class="wp-block-cocoon-blocks-sticky-box blank-box block-box sticky st-blue">
<p>array_keys(配列)</p>
</div>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP"><code>$count_per_class = [&#39;1A&#39; =&gt; 30, &#39;1B&#39; =&gt; 32, &#39;1C&#39; =&gt; 34];
$keys = array_keys($count_per_class);
var_export($keys);</code></pre></div>



<p><span class="bold">出力</span></p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>array (
  0 =&gt; &#39;1A&#39;,
  1 =&gt; &#39;1B&#39;,
  2 =&gt; &#39;1C&#39;,
)</code></pre></div>



<h3 class="wp-block-heading">連想配列の結合</h3>



<p>連想配列同士を結合するには<span class="marker-under">array_merge</span>関数を使います。</p>



<div class="wp-block-cocoon-blocks-sticky-box blank-box block-box sticky st-blue">
<p>array_merge(配列1, 配列2, &#8230;)</p>
</div>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP"><code>$count_per_class1 = [&#39;1A&#39; =&gt; 30, &#39;1B&#39; =&gt; 32, &#39;1C&#39; =&gt; 34];
$count_per_class2 = [&#39;2A&#39; =&gt; 27, &#39;2B&#39; =&gt; 30, &#39;2C&#39; =&gt; 29];
$result = array_merge($count_per_class1, $count_per_class2);
var_export($result);</code></pre></div>



<p><strong>出力</strong></p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>array (
  &#39;1A&#39; =&gt; 30,
  &#39;1B&#39; =&gt; 32,
  &#39;1C&#39; =&gt; 34,
  &#39;2A&#39; =&gt; 27,
  &#39;2B&#39; =&gt; 30,
  &#39;2C&#39; =&gt; 29,
)</code></pre></div>



<div class="wp-block-cocoon-blocks-icon-box common-icon-box block-box alert-box">
<p>キーが重複した場合、後ろの引数で指定した連想配列で値を上書きします。</p>



<p>参考URL<br><a rel="noopener" href="https://www.php.net/manual/ja/function.array-merge.php" target="_blank">PHP: array_merge &#8211; Manual</a></p>
</div>



<h2 class="wp-block-heading">キーと値のペアを取得</h2>



<p>キーと値のペアをすべて取得するには、foreach文を使います。</p>



<div class="wp-block-cocoon-blocks-sticky-box blank-box block-box sticky st-blue">
<p>foreach (連想配列 as $キー =&gt; $値) {<br>// 処理<br>}</p>
</div>



<p>foreach文を連想配列に使うと、連想配列のすべてのペアについて1つずつループ処理していきます。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP"><code>$count_per_class = [&#39;1A&#39; =&gt; 30, &#39;1B&#39; =&gt; 32, &#39;1C&#39; =&gt; 34];
foreach($count_per_class as $key =&gt; $value) {
    print &quot;キー：{$key}, 値：{$value}&quot; . PHP_EOL;
}</code></pre></div>



<p><strong>出力</strong></p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>キー：1A, 値：30
キー：1B, 値：32
キー：1C, 値：34</code></pre></div>



<h2 class="wp-block-heading">まとめ</h2>



<p>PHPの連想配列は、設定ファイルの管理やデータのマッピングなど多くの場面で役に立つ代物です。簡単にデータの管理や操作を行えるので、是非習得していきましょう。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://code-ch.com/associative-array/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>while文とは？使い方や記述方法を分かりやすく解説</title>
		<link>https://code-ch.com/while/</link>
					<comments>https://code-ch.com/while/#respond</comments>
		
		<dc:creator><![CDATA[TJR]]></dc:creator>
		<pubDate>Wed, 14 Aug 2024 11:34:48 +0000</pubDate>
				<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[プログラミング基礎講座]]></category>
		<category><![CDATA[初学者向け]]></category>
		<category><![CDATA[制御構造]]></category>
		<guid isPermaLink="false">https://code-ch.com/?p=292</guid>

					<description><![CDATA[プログラミングにおいて、繰り返し処理はよく使うテクニックです。その中でもwhile文は、指定した条件が満たされるまで処理を繰り返すループ処理のひとつです。本記事では、while文の基本的な使い方と、活用方法について分かり [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>プログラミングにおいて、繰り返し処理はよく使うテクニックです。その中でもwhile文は、指定した条件が満たされるまで処理を繰り返すループ処理のひとつです。本記事では、while文の基本的な使い方と、活用方法について分かりやすく説明します。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="576" src="https://code-ch.com/wp-content/uploads/2024/08/Code-chサムネイル-1024x576.png" alt="" class="wp-image-298" srcset="https://code-ch.com/wp-content/uploads/2024/08/Code-chサムネイル-1024x576.png 1024w, https://code-ch.com/wp-content/uploads/2024/08/Code-chサムネイル-300x169.png 300w, https://code-ch.com/wp-content/uploads/2024/08/Code-chサムネイル-768x432.png 768w, https://code-ch.com/wp-content/uploads/2024/08/Code-chサムネイル-1536x864.png 1536w, https://code-ch.com/wp-content/uploads/2024/08/Code-chサムネイル-120x68.png 120w, https://code-ch.com/wp-content/uploads/2024/08/Code-chサムネイル-160x90.png 160w, https://code-ch.com/wp-content/uploads/2024/08/Code-chサムネイル-320x180.png 320w, https://code-ch.com/wp-content/uploads/2024/08/Code-chサムネイル.png 1920w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<h2 class="wp-block-heading">while文とは</h2>



<p>while文は、特定の条件が<span class="marker-under-red">Trueである間</span>に繰り返し処理を実行する制御構造です。条件が満たされている限り処理を何度も行いたい場合に使用されます。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>while (条件式) {
    //処理
}</code></pre></div>



<h3 class="wp-block-heading">while文を使った例</h3>



<p>特定の数から1ずつ引いて、0になるまで出力するプログラムをご紹介します。この例はJavascriptを使用しています。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-js" data-lang="JavaScript"><code>let n = 10;
while (n &gt;= 0) {
    console.log(n);
    n -= 1;
}</code></pre></div>



<p>nが0以上であれば、nを出力して1減らすというのが1ループの流れです。出力は以下のようになります。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>10
9
8
7
6
5
4
3
2
1
0</code></pre></div>



<div class="wp-block-cocoon-blocks-blank-box-1 blank-box block-box">
<p>&gt;= などの記号についてはこちらの記事で解説しています。</p>



<div class="wp-block-cocoon-blocks-blogcard blogcard-type bct-none">

<a href="https://code-ch.com/programming/if#comparison_greater-than" title="if文とは？使い方や記述例を分かりやすく解説" class="blogcard-wrap external-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img loading="lazy" decoding="async" src="https://code-ch.com/wp-content/uploads/2024/07/thumbnail-if.png" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="160" height="90" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">if文とは？使い方や記述例を分かりやすく解説</div><div class="blogcard-snippet external-blogcard-snippet">if文とは何か分かりやすく解説！if文の用途やif else文、条件式、複数条件、各プログラミング言語での記述例を説明しています。</div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://code-ch.com/if/" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">code-ch.com</div></div></div></div></a>
</div>
</div>



<figure class="wp-block-image aligncenter size-large is-resized"><img loading="lazy" decoding="async" width="768" height="1024" src="https://code-ch.com/wp-content/uploads/2024/08/開始-768x1024.png" alt="" class="wp-image-294" style="width:521px;height:auto" srcset="https://code-ch.com/wp-content/uploads/2024/08/開始-768x1024.png 768w, https://code-ch.com/wp-content/uploads/2024/08/開始-225x300.png 225w, https://code-ch.com/wp-content/uploads/2024/08/開始.png 960w" sizes="(max-width: 768px) 100vw, 768px" /><figcaption class="wp-element-caption">while文のフローチャート</figcaption></figure>



<ol class="wp-block-list">
<li>n &gt;= 0の条件判定
<ul class="wp-block-list">
<li>Trueの場合 2.へ</li>



<li>Falseの場合ループを終了する</li>
</ul>
</li>



<li>nを出力</li>



<li>nを1減らす</li>
</ol>



<p>条件判定でFalseにならなければループを終了できず、<span class="marker-under-red">無限ループ</span>に陥るので注意しましょう。</p>



<div class="wp-block-cocoon-blocks-icon-box common-icon-box block-box alert-box">
<p>下記のコードは無限ループになります。<br>n -= 1のところをn += 1 としているため、n &gt;= 0 がFalseにならずループから抜けられません。無限ループが起こるとプログラムが固まったり、終了するなどの不具合が起こるので注意が必要です。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-js" data-lang="JavaScript"><code>let n = 10;
while (n &gt;= 0) {
    console.log(n);
    n += 1;
}</code></pre></div>
</div>



<h2 class="wp-block-heading">各プログラミング言語での記述例</h2>



<h3 class="wp-block-heading">Python</h3>



<div class="hcb_wrap"><pre class="prism line-numbers lang-python" data-lang="Python"><code>n = 10
while n &gt;= 0:
    print(n)
    n -= 1</code></pre></div>



<h3 class="wp-block-heading">Java</h3>



<div class="hcb_wrap"><pre class="prism line-numbers lang-java" data-lang="Java"><code>int n = 10;
while (n &gt;= 0) {
    System.out.println(n);
    n -= 1;
}</code></pre></div>



<h3 class="wp-block-heading">PHP</h3>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP"><code>$n = 10;
while ($n &gt;= 0) {
    echo $n . PHP_EOL;
    $n -= 1;
}</code></pre></div>



<h3 class="wp-block-heading">C言語</h3>



<div class="hcb_wrap"><pre class="prism line-numbers lang-c" data-lang="C"><code>int n = 10;
while (n &gt;= 0) {
    printf(&quot;%d\n&quot;, n);
    n -= 1;
}</code></pre></div>



<h2 class="wp-block-heading">while文はループ処理に便利な構文</h2>



<p>ループ処理にはfor文、foreach文などの構文がありますが、その中でもwhile文はとても簡潔な記述を可能にしています。無限ループを起こさないように気を払う必要はありますが、使いこなすと強力です。是非覚えておきましょう。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://code-ch.com/while/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
