🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

4回答

1581閲覧

if(!mt_rand(0,9))のtrue、falseの判定基準

qcd

総合スコア5

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2019/10/20 07:02

mt_randを使ったif文のtrue、falseの判定基準が分かりません。

下記コードで、mt_rand(0,9)の結果が0の場合はtrueになることは分かったのですが、なぜ0がtrueと判定されるのか分かりません。
0がtrueと判定される理屈をご教示ください。
よろしくお願いします。

php

1if(!mt_rand(0,9)){ 2 // 0の場合 3 echo 'true'; 4 }else{ 5 // 0以外の場合 6 echo 'false'; 7 }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答4

0

理屈

仕様で定められているからです。

【PHP: PHP 型の比較表 - Manual】
https://www.php.net/manual/ja/types.comparisons.php

投稿2019/10/20 07:08

kei344

総合スコア69596

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

qcd

2019/10/20 07:49

仕様で決められているのですね。 教えていただいたManualページも確認しました。 ご回答ありがとうございました。
guest

0

ベストアンサー

数値の場合、0だけが偽で、それ以外が真です。これはPHPの決まりです。
!で真偽を反転しているので、その逆になります。

投稿2019/10/20 07:08

otn

総合スコア85893

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

qcd

2019/10/20 07:32

ご回答ありがとうございます。 私にとって最も分かりやすい回答だったためベストアンサーとさせて頂きました。
guest

0

0の場合はifの判定的にはfalseです。

論理型

boolean に変換する場合、次の値は FALSE とみなされます。
boolean の FALSE
integer の 0 および -0 (ゼロ)
float の 0.0 および -0.0 (ゼロ)
空の文字列、 および文字列の "0"
要素の数がゼロである 配列
特別な値 NULL (値がセットされていない変数を含む)
空のタグから作成された SimpleXML オブジェクト

コードで ifの判定で ! (false)のときに「true」と出力させているだけですね。

投稿2019/10/20 07:07

m.ts10806

総合スコア80875

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

qcd

2019/10/20 07:50

0はfalseと判定されるとのこと、承知いたしました。 ご回答ありがとうございました。
m.ts10806

2019/10/20 08:00

PHPマニュアルを確認すれば仕様的なところは大抵載っています
guest

0

php

1var_dump(1 == true); 2var_dump(2 == true); 3var_dump(0 == false); 4var_dump(0 === false); 5var_dump((!0) == true)); 6var_dump((!0) === true));

投稿2019/10/20 07:07

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

qcd

2019/10/20 08:00

ご回答ありがとうございます。 示していただいたコードを実行してみて概ね理解しました。 ただ、var_dump(0 === false); の結果がfalseになるところだけ理解できませんでした。私としてはtrueになると思ったのですが。 どうもまだ基本の理解が足りていないようです。
退会済みユーザー

退会済みユーザー

2019/10/20 08:06 編集

0 は int false は boolean === はデータ型も一致しなければなりません。 @kei334  さんが提示してくれているURLに書かれています。
qcd

2019/10/20 08:16

分かりました。falseがboolean型ということが分かっていませんでした。 すっきりしました。 とても分かりやすいご説明ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問