这个特殊的 StrPos 在 PHP 中是如何工作的?

How does this particular StrPos work in PHP?

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

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

我认为它是如何工作的:在 $_order->getDiscountDescription() 中寻找 'Gift Card',如果它不是假的,就做点什么。不过,我不明白那是什么。有什么想法吗?

这主要是检查字符串文字“Gift Card”是否包含在由 $_order->getDiscountDescription() 编辑的字符串 return 中(即假设它 returns 一个字符串...)。使用运算符 !== 和操作数 false 是因为位置可能为 0,表示字符串的开头。参考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.

当该条件为真(即订单描述包含 'Gift Card')时,变量 $order 将附加字符串文字 RGC1*1*,后跟 return 值来自对 $_order->getDiscountDescription() 的调用,5 个星号字符,一个回车符 return 字符(即 \r)和一个换行符(即 \n)。