我有一个复杂的场景,我需要运行一个for循环,它应该一直运行,不依赖于变量,但如果存在变量DOES(意味着它不等于'')那么我需要检查另一个。如果两个条件都为真,那么它应该继续。令人困惑,但很难解释让我尝试告诉你:
$ subcat在for循环
之前的其他地方定义for($i=0; $i<sizeof($news_posts); ++$i)
$subcategory = $news_posts[$i]['subcategory'];
if( $subcat != '' && $subcat == $subcategory){
CONSEQUENT XYZ.
所以基本上。我需要这个for循环来执行XYZ EVERYTIME。但是如果存在IF Subcat,那么它只需要显示subcat与子类别相同的结果。
怎么办这样的事?
答案 0 :(得分:0)
使用isset()测试变量的存在性: php man isset
答案 1 :(得分:0)
for($i = 0; $i < sizeof($news_posts); ++$i) {
$subcategory = $news_posts[$i]['subcategory'];
//Show entry only if subcat is not set OR if it is set and matches the subcategory
if(!isset($subcat) || ($subcat == $subcategory)) {
//Do show entry stuff
}
}
应该是不言自明的,这是你似乎正在寻找的条件。如果设置了$subcat
,则只有与子类别匹配的迭代才会运行show entry代码,否则所有迭代都将运行它。
因为isset是一个语言结构而不是一个函数,并且因为如果该语句的第一个条件为真,则忽略第二个条件,如果永远不会声明$subcat
,则上面的代码不会引发错误,相反到原始代码。