function foo($bar) {
$qux = strpos('abcdef', $bar);
if ($qux) {
$qux += 1;
} else {
$qux = -1;
}
return $qux;
}
$x = foo('abc');
$y = foo('def');
我有上述功能,我对如何回答以下问题感到困惑。我知道该函数将接受一个参数,然后使用它来检查它是否存在于字符串中然后将该值放入变量,因为在PHP中,true或false为1或0,或者根据找到的字符串递增或递减。登记/> 现在我对如何回答以下问题很困惑。
我只想知道如何回答以下问题。
示例$x is 1, $y is 4
$x = foo('abc');
$y = foo('def');
自'abc'
发现$qux
的真值为1 plus 1 equals 2 then the function returns 2 $x will be 2
。
然后如何回答$x is 1, $y is 4
?
什么是$ x和$ y?
$ x为1,$ y为4
$ x为-1,$ y为4
$ x为-1,$ y为5
$ x为2,$ y为5
答案 0 :(得分:2)
答案是-1和4。
原因是,abc
位于0位置,如果将其检查为布尔值,则认为0为false
,
if ($qux) with $qux =0
会$qux = -1
。
对于def, $qux = 3. $qux > 0
,所以$ qux为真所以$qux +=1
所以$qux =4
答案 1 :(得分:1)
在$x = foo('abc');
=>调用foo()并且该函数返回一个结果。
在foo()
:
$qux = strpos('abcdef', $bar); // strpos() search for `abc` & will found it and results 0 because strpos() index start from 0.
if ($qux) {
$qux += 1; // here $qux = 0 + 1, which is 1
} else {
$qux = -1;
}
return $qux; // 1 returned to called function ie, $x.
所以$ x是1&类似地,$ y来自4
strpos()
int strpos ( string $haystack , mixed $needle [, int $offset = 0 ] )
strpos()
函数查找第一次出现的字符串在另一个字符串中的位置。
注意:strpos()
功能区分大小写。
注意:此功能是二进制安全的。
<强>参数强>
<强>草堆强> 要搜索的字符串。
<强>针强> 如果needle不是字符串,则将其转换为整数并应用为字符的序数值。
<强>偏移强> 如果指定,搜索将从字符串的开头开始计算此字符数。如果偏移量为负数,则搜索将从字符串末尾开始计算此字符数。
要注意的要点是(并且可能会让你遇到麻烦):
strpos()从0开始计算位置而不是1
答案 2 :(得分:1)
对于这两种情况,strpos为0和3. 0为假ish,3为true-ish。所以$x = 0-1 = -1
和$y = 3+1 = 4
。