mercredi 8 mars 2017

using variable defined in IF statement in same statement using &&

It seems that I can't use a variable defined in an if statement in a later part of the same statement. Is there a way around this? Here's the statement:

if ($cat = getCat($item) && 
    ($masterCat= getVC($cat) || $masterCat= getTC($cat))) {
    echo "success";
} else {
    echo "fail";
}

As you can see, $cat is defined in the first part. If that part evaluates False then the other parts won't run. My problem is that I get

Undefined variable: cat

even though getCat is called and $cat defined before the RHS of the && operator is evaluated.

Building this code I learned about short circuit evaluation and Truthy values but now I'm stuck trying to "one line" it. I can nest if statements but was wondering as there are three possible points of failure if there's a way to do this where the "fail" part is only defined once (it's bigger in the real code, not just echo "fail";)

functions below

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)
}

Aucun commentaire:

Enregistrer un commentaire