为什么这样的条件总是会转向其他?

时间:2014-04-03 02:44:48

标签: php cakephp if-statement conditional-statements

我有这个条件:

 if(!empty($numerofiles)) { // <-- WHEN THIS ARRAY IS EMPTY

                for ($i=0; $i < $numerofiles; $i++) {
                    $allowed =  array('doc','pdf','jpg','jpeg','xls','docx','xlsx');
                    $ext = pathinfo($name, PATHINFO_EXTENSION);
                     // BLA BLA BLA SOME CODE

                    if(in_array($ext,$allowed)) {

                        // BLA BLA SOME CODE

                    } else { // <-- ..IT SEND ME FOR THIS ELSE

                        $this->Comment->delete($this->Comment->id);
                        $this->Session->setFlash('Tipo de arquivo não permitido', 'default', array('class' => 'flash_fail'));
                        $this->redirect(array('action' => 'view', $id));

                    }

                }
        }  else { // <-- BUT THIS SHOULD TO GO HERE

        }
    $this->Session->setFlash('Comentário adicionado com sucesso!', 'default', array('class' => 'flash_sucess'));
    $this->redirect(array('action' => 'view', $id));

在我的第一个if中,$numerofiles为空时,这是向我发送第二个else的{​​{1}}。 但是,我希望如果if$numerofiles它的跳转并发送代码结束。 有什么问题?

1 个答案:

答案 0 :(得分:1)

简单

if(!empty($numerofiles))更改为if(empty($numerofiles))

您正在检查是否为空,而您需要检查的是如果它是空的

另外,你说empty($numerofiles)评价为假。这意味着它不是空的。然后再次放置一个not运算符,所以你否定它,现在意味着'如果它是空的'

empty()函数用于检查变量是否为空。

Return value

FALSE if var_name has a non-empty and non-zero value.

Value Type : Boolean

List of empty things :

"0" (0 as a string)
0 (0 as an integer)
"" (an empty string)
NULL
FALSE
"" (an empty string)
array() (an empty array)
$var_name; (a variable declared but without a value in a class)

Source

修改

看起来你还没有出现这个问题。

lemme再试一次..

第1步:if(!empty($numerofiles)) =&gt; if(NOT (number of files is EMPTY))

这里的关键是boolean值(文件数是EMPTY)

在您的评论中,您说empty($numerofiles)评估为假

因此(文件数量为EMPTY)为FALSE

再看第1步:

if(NOT (FALSE)) =&gt; if(TRUE)

因此,对于此场景,您的实际代码是当前输入,  执行时为if(TRUE)

由于它是if(TRUE),控件进入内部。同意?