「if($err)」こちらの書き方なのですが、$errが配列であり、要素が一つの空文字の場合、「FALSE」を返すと思うのですが、
「if(!$err)」こちらの書き方では、「TRUE」とは判定されません。
否定演算子により、TRUEになるかと思うのですが、何故、FALSEとなってしまうのでしょうか?
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答3件
0
ベストアンサー
$errが配列であり、要素が一つの空文字の場合、「FALSE」を返すと思うのですが、
返しません。PHPでFALSE
とみなされる値は、
0
、0.0
、-0.0
''
(空文字列)、'0'
FALSE
NULL
[]
(空の配列)- 空のタグから作成された SimpleXML オブジェクト
だけで、['']
は含まれません。
投稿2019/04/25 10:15
総合スコア145184
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総合スコア114843
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
総合スコア821
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/04/25 10:18
2019/04/25 11:27