0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

🧠 今日の一問(PHP|初中級)

Posted at

🧠 今日の一問(PHP|初中級)

次のコードを実行したとき、echo で出力される結果は何ですか?理由も簡潔に説明してください。

<?php
$value = "0";

if ($value) {
    echo "A";
} else {
    echo "B";
}

解答形式

  • 出力結果:
  • 理由(1〜2行):
    ※ 推奨解答時間:3〜5分
    (※ PHP特有の「真偽値判定」がポイントです)

正解

  • B

解説

PHP特有の判定方法を問う問題です。

理由の整理(正確版)

$value = "0";

PHPでは 特定の値が false 扱いされます。if {A} else {B}ではtrueの場合にA,falseの場合にBが出力されます。今回変数$valueに定義された『文字列の0』はPHPではfalse扱いになるので、出力結果はBになります。
👉 false 判定 → else が実行される

false と判定される代表例

  • false
  • 0(数値)
  • "0"(文字列)
  • ""(空文字)
  • [](空配列)
  • null
$value = "0";
if ($value) { // "0" は false
  • 型変換されるというより
  • PHPの真偽値変換ルールで "0" が false 扱い

この問題で問われている理解

  • PHP の 真偽値判定(truthy / falsy)
  • isset / empty との使い分けへの布石

面接での短文回答

PHPでは文字列の "0" は false と評価されるため、else 側が実行されます。


補足:PHP:isset / empty

PHP の isset / empty を、違い・使い分け・事故例の順で解説します。

① 結論(まずこれだけ)

  • 存在チェック → isset
  • 中身が空か → empty
  • 両方同時にやりたい → isset && !empty

② isset とは?

「その変数が存在していて、null ではないか」を調べます。
未定義 or nullの場合、値が設定されていない扱いになるのでfalseになります。

isset($a);

true になる例

$a = 0;
$a = "0";
$a = "";
$a = false;

false になる例

`$a が未定義 $a = null;`

👉 値の中身は見ない

③ empty とは?

empty($a);

「中身が空っぽ扱いか」を調べます。

true になる例(重要)

$a //aが未定義状態
$a = null;
$a = false;
$a = 0;
$a = "0";
$a = "";
$a = [];

👉 かなり厳しめ
👉 "0" が empty になるのが最大の罠

④ 両者の決定的な違い

isset empty
未定義 false true
null false true
0 true true
"0" true true
"" true true
false true true

⑤ 実務での使い分け(超重要)

フォーム送信チェック

if (isset($_POST['name'])) {
    // フィールドが送られてきたか
}

未入力チェック

if (empty($_POST['name'])) {
    // 未入力エラー
}

⑥ 一番安全な書き方(王道)

if (!isset($_POST['age'])) {     
//nllか未定義の状態⇒そもそも送信されていない 
}  

if (empty($_POST['age']) && $_POST['age'] !== "0") {
//ageがemptyかつ0ではない
//本当に未入力 
}

👉 "0"正しく入力として扱いたい場合は必須


⑦ よくある事故例(面接で話せる)

$age = "0"; 
if (empty($age)) { 
echo "未入力"; 
}
//true

❌ 「0歳」が未入力扱いになる

⑧ 面接用まとめ(短文)

isset は変数の存在確認、empty は値が空かどうかを判定します。
empty は "0" も空と判定するため注意が必要です。

理解度

  • PHP 初学者が必ず踏む地雷を回避できる状態
  • フォーム処理・バリデーションに直結する知識
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?