【发布时间】:2017-03-08 14:20:29
【问题描述】:
似乎我不能在同一语句的后面部分使用 if 语句中定义的变量。有没有解决的办法?声明如下:
if ($cat = getCat($item) &&
($masterCat= getVC($cat) || $masterCat= getTC($cat))) {
echo "success";
} else {
echo "fail";
}
如您所见,$cat 是在第一部分中定义的。如果该部分评估为 False,则其他部分将不会运行。我的问题是我得到了
未定义变量:猫
即使在计算 && 运算符的 RHS 之前调用了 getCat 并定义了 $cat。
构建此代码我了解了short circuit evaluation 和Truthy values,但现在我被困在尝试“单行”它。我可以嵌套 if 语句,但我想知道是否有办法做到这一点,其中“失败”部分只定义一次(在实际代码中更大,而不仅仅是回显“失败”;)
下面的函数
function getCat($pItem) {
//looks up $pItem and returns a category or null if $pItem doesn't exist
}
function getVC($pCat) {
//looks up $pCat quickly, returns master category or null if not in quick lookup table
}
function getTC($pCat) {
//looks up $pCat thoroughly,
//returns master category OR
//returns null if $pCat has expired (shouldn't happen but prevents crashing if it ever does)
}
【问题讨论】:
-
您是否尝试过将其与 if 语句分开?如果问题是在条件中发生的分配,或者是否发生了其他奇怪的事情,这将很快告诉你。
-
是的,这不是我想的那样,这是下面@Boldewyn 指出的问题。
标签: php if-statement