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

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

詳細はこちら
PHP

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

Q&A

解決済

2回答

281閲覧

phpのif文で見た事のない形

ryu0311

総合スコア32

PHP

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

0グッド

0クリップ

投稿2019/10/03 01:11

編集2019/10/03 01:18

php初心者です。
phpのif文で見た事のない形なので質問します。

以下のif文で、if($id)となっていますが、
ifの引数はbool型ではないのでしょうか。

それと中の分岐も、if(!$cm = ...)となっていて、
if($x != ...)のような形ならわかるのですが、これも見たことがなく、困惑しています。

if ($id) { if (!$cm = get_coursemodule_from_id('quiz', $id)) { print_error('invalidcoursemodule'); } if (!$course = $DB->get_record('course', array('id' => $cm->course))) { print_error('coursemisconf'); } if (!$quiz = $DB->get_record('quiz', array('id' => $cm->instance))) { print_error('invalidcoursemodule'); } } else { echo "id is required"; exit; }

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

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

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

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

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

m.ts10806

2019/10/03 01:14 編集

勘違いのため修正
m.ts10806

2019/10/03 01:15

コードはマークダウンのcode機能を利用してご提示ください もうひとつの質問も同じく
ryu0311

2019/10/03 01:18

すみません、変更しました
guest

回答2

0

PHPマニュアルを読みましょう

boolean への変換

boolean に明示的に変換を行うには、キャスト (bool) または (boolean) を使用します。しかし、演算子、関数、制御構造が boolean 型の引数を必要とする場合には、値は自動的に変換されるため、 多くの場合はキャストは不要です。
型の相互変換 も参照ください。
boolean に変換する場合、次の値は FALSE とみなされます。
boolean の FALSE
integer の 0 および -0 (ゼロ)
float の 0.0 および -0.0 (ゼロ)
空の文字列、 および文字列の "0"
要素の数がゼロである 配列
特別な値 NULL (値がセットされていない変数を含む)
空のタグから作成された SimpleXML オブジェクト
**その他の値は全て TRUE とみなされます **(全ての resource および NAN を含みます)。

つまり「falseとして判定される値以外はtrue」なのです

投稿2019/10/03 01:19

m.ts10806

総合スコア80875

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

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

ryu0311

2019/10/03 01:21

数字は0がfalseでそれ以外がtrueというのは理解しました。 もう一つのif文に関してはどうでしょうか?
m.ts10806

2019/10/03 01:24

どうでしょうかと言われましても、理屈は同じです。 比較ではなく代入なので代入結果の真偽判定となります。
ryu0311

2019/10/03 01:25

なるほど・・・、 if文の中で代入を行っているという事ですよね、 それができることを知りませんでした、 ありがとうございます。
m.ts10806

2019/10/03 01:45 編集

phpマニュアルにも「式」についての言及がありますのでご確認を。 代入の場合は「代入した結果」を「式」と解釈します。 よく例文でDBから取得するときにwhile()でループさせますがあれも理屈は同じ。 while($row = $db->fetch($res))
guest

0

ベストアンサー

php

1foreach([false,null,[],0,0x0,"","0","\x30"] as $key=>$val){ 2 if(!$val){ 3 print $key.":"; 4 var_dump($val); 5 print "<br>"; 6 } 7} 8

ifの中ではキャストされて評価されるので上記すべて対象になります

2番めは

PHP

1$a=null; 2if(!$a=0) print "1:"; 3var_dump($a);

まず($a=0)が実行され、$aに0が投入されます。
その後その式を評価しnot(!)を取っているので0が裏返ってtrueを返し「1:」が表示されます
逆にこうすると

PHP

1$a=null; 2if(!$a=1) print "2:"; 3var_dump($a);

$aが1になった後、式の1がnotされfalseになり"2:"は表示されません

投稿2019/10/03 01:41

yambejp

総合スコア116683

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問