简体   繁体   中英

How does this particular StrPos work in PHP?

I have the following code. I'm wondering if it's working like I think it is:

//Gift Card Redemption
        if(strpos($_order->getDiscountDescription(), 'Gift Card') !== false){
                $order .= 'RGC1*1*'.$_order->getDiscountDescription().'*****';
                $order .= "\r\n";
        }  

How I think it works: look for 'Gift Card' in $_order->getDiscountDescription() , and if it's not false, do something. I don't follow what that something is, though. Any ideas on that?

This basically checks to see if the string literal ' Gift Card ' is contained in the string returned by $_order->getDiscountDescription() (ie presuming it returns a string...). The use of the operator !== and operand false is used because the position might be 0, meaning the start of the string. Refer to the warning on the documentation for strpos() :

Warning This function may return Boolean FALSE , but may also return a non-Boolean value which evaluates to FALSE . Please read the section on Booleans for more information. Use the === operator for testing the return value of this function.

When that condition is true (ie the order description contains 'Gift Card') then the variable $order gets appended with the string literal RGC1*1* followed by the return value from the call to $_order->getDiscountDescription() , 5 asterisk characters, a carriage return character (ie \\r ) and a new line character (ie \\n ).

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM