这个特定的StrPos如何在PHP中运行?

时间:2017-11-17 18:23:21

标签: php magento strpos

我有以下代码。我想知道它是否像我认为的那样工作:

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

我认为它如何运作:寻找礼品卡'在$_order->getDiscountDescription()中,如果它不是假的,那就做点什么吧。但是,我并不关注那些东西。有什么想法?

1 个答案:

答案 0 :(得分:4)

这基本上会检查$_order->getDiscountDescription()返回的字符串中是否包含字符串文字' Gift Card '(即假设它返回一个字符串......)。使用运算符!==和操作数false的使用是因为位置可能为0,表示字符串的开头。请参阅the documentation for strpos()上的警告:

  

警告   此函数可能返回布尔 FALSE ,但也可能返回非布尔值,其值为 FALSE 。有关详细信息,请阅读Booleans部分。使用the === operator来测试此函数的返回值。

当条件为真时(即订单描述包含'礼品卡'),变量$order会附加字符串文字RGC1*1*,后跟调用{{1}的返回值5个星号字符,一个回车符(即$_order->getDiscountDescription())和一个换行符(即\r)。