[英]Make the function return 0 and store it in a variable
似乎非常簡單,但在 SO 上找不到解決此特定案例的方法
一個函數可能返回 0 或另一個數字的值,然后我想將其存儲在變量$s
以計算內容。 但是找不到干凈的方法。
例如:
function f() {
$v = "0";
return $v;
}
if($s = f() !== false) {
echo $s;
// ^ I want 0, but the value above is 1 (since it's true)
}
我嘗試將它作為字符串返回
返回“0”而不是數字,但它不起作用。
如果我這樣做,它不會評估為真,所以什么都不會發生
if($s = f()) {
// returns nothing
}
但是當我var_dump(f())
,它確實顯示字符串 '0' (length=1)
所以我可以做
if(var_dump(f()) == 0)
或者
if(f() == 0)
但是沒有更簡潔的方法來做到這一點,因此該函數可能返回 0 或其他數字,而我可以將其捕獲在變量中?
添加括號:
if (($s = f()) !== false) {
否則,您將計算值f() !== false
並將其分配給$s
,而不是將f()
分配給$s
然后與false
進行比較。
第一的
if($s = f() !== false) {
echo $s;
// ^ I want 0, but the value above is 1 (since it's true)
}
這里發生的是 f() 的返回值嚴格與 false 進行比較,即“0”與 false 進行比較。 它們不嚴格相等,因此 f() !== false 返回 true,它在 $s 中存儲為 1。
下一個,
if($s = f()) {
// returns nothing
}
這不會進入 if 塊,因為 $s 包含“0”並且它大致等於 false。
下一個
if(var_dump(f()) == 0) or if(f() == 0)
這是有效的,因為它松散地將“0”與 0 進行比較,這是真的。 因此它進入塊。
請記住,如果條件進行松散比較或 == 和 === 進行嚴格比較。 更多關於它在這里。
所以,這應該適用於你的情況
if(($s = f()) !== 0)
如果 f() 返回整數
嘗試一些括號:
if(($s = f()) !== false) {
強制$s
等於f()
,而不是f() !== false
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.