我有这个条件:
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
它的跳转并发送代码结束。
有什么问题?
答案 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)
修改强>
看起来你还没有出现这个问题。
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)
,控件进入内部。同意?