質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.48%
PHP

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

Q&A

解決済

3回答

587閲覧

ifによる条件の評価ついて

toll_tree

総合スコア199

PHP

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

0グッド

0クリップ

投稿2019/04/25 09:42

「if($err)」こちらの書き方なのですが、$errが配列であり、要素が一つの空文字の場合、「FALSE」を返すと思うのですが、
「if(!$err)」こちらの書き方では、「TRUE」とは判定されません。
否定演算子により、TRUEになるかと思うのですが、何故、FALSEとなってしまうのでしょうか?

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

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

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

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

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

guest

回答3

0

ベストアンサー

$errが配列であり、要素が一つの空文字の場合、「FALSE」を返すと思うのですが、

返しません。PHPでFALSEとみなされる値は、

  • 00.0-0.0
  • ''(空文字列)、'0'
  • FALSE
  • NULL
  • []空の配列)
  • 空のタグから作成された SimpleXML オブジェクト

だけで、['']含まれません

booleanへの変換(PHPマニュアル)

投稿2019/04/25 10:15

maisumakun

総合スコア145184

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

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

toll_tree

2019/04/25 11:27

ご回答ありがとうございます 空の配列では、FALSEになるが、配列に格納されている、空文字は「FALSE」とはならないのですね... 勘違いしていました...
guest

0

命題が再現できません

PHP

1if([1,2]) print 1; 2if([1,2,null]) print 2; 3if([null]) print 3; 4if([""]) print 4; 5if([false]) print 5; 6if([0]) print 6; 7if([]) print 7; 8print "<hr>"; 9if(![1,2]) print 1; 10if(![1,2,null]) print 2; 11if(![null]) print 3; 12if(![""]) print 4; 13if(![false]) print 5; 14if(![0]) print 6; 15if(![]) print 7;

投稿2019/04/25 10:00

編集2019/04/25 10:01
yambejp

総合スコア114843

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

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

toll_tree

2019/04/25 11:35

ご回答ありがとうございます。 方の比較表のようなものもあるのですね。 参考になります
toll_tree

2019/04/25 12:27

しかし、思ったのですが、配列にnullや空文字が入っていたら、trueとなるのに、ただの変数としてnullや空文字の場合は、falseとなるのは、若干混乱する部分はありますね...
guest

0

php

1<?php 2$err = [""]; 3 4echo gettype($err) . "\n"; 5 6if ($err) { 7 echo "true\n"; 8} else { 9 echo "false\n"; 10} 11 12if (!$err) { 13 echo "true\n"; 14} else { 15 echo "false\n"; 16} 17
[実行結果] array true false

まったく逆の結果になってしまいました。

一つ疑問なのですが、なぜ前半が「~を返すと思う」で、後半が「判定されません」なのでしょうか。
どちらかを確認できる状況なら、前半についても「~思う」じゃなくて、ご自分でも確認できるのでは?

投稿2019/04/25 10:15

takepan1973

総合スコア821

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

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

toll_tree

2019/04/25 11:36

おっしゃる通りですね... ちょっと、混乱してて、なんか訳が分からなくなっていたので、補足的なアドバイスも頂けるかと思い、ご質問させて貰いました
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問