在這個基本代碼中,我檢查特定用戶和國家是否存在具有特定itemId的記錄。函數外部的值與函數內部的值不同
該函數內部的記錄返回1
,但是當它在外面時,它是完全不同的。
function recordExists(&$d) {
global $conn, $userId, $userCountryCode;
$sqlFindRecord = "select count(itemId) as recordCount from onr_items_mod where itemTempId = :itemTempId and itemStatus IN(0,5,8) and itemPublishedStatus = 2 and itemUserId = :userId and itemUserCountryCode = :userCountryCode";
$countRecord = $conn->prepare($sqlFindRecord);
$countRecord->execute(array(
":itemTempId" => $d,
":userId" => $userId,
":userCountryCode" => $userCountryCode
));
$countRecord->bindColumn('recordCount',$d);
echo 'This is D '.$d.' ---';
$row = $countRecord->fetch();
if($d == 0) {
return $d;
} elseif ($d == 1) {
return $d;
} else {
return false;
}
}
$d = 'US01'
if(recordExists($d) == 0) { //If the function returned 0
echo $d;
echo 'Was Zero';
} elseif (recordExists($d) == 1) { //If the function returned 1
echo $d;
echo 'Was One';
} else {
echo $d;
echo 'Neither Zero or One';
}
在我完成上述操作後,它總是'不是零或一個'。爲什麼是這樣?我嘗試了整個早晨,但是卻無法想出解決方法。
這工作,但不是上述
function counter(&$a) {
if($a == 0) {
return $a;
} elseif ($a == 1) {
return $a;
} else {
return false;
}
}
$a = 1;
if(counter($a) == 0) {
echo $a;
} elseIf (counter($a) == 1) {
echo $a;
} else {
echo 'Umm...'.$a;
}
爲什麼你通過引用傳遞'$ d'到函數? –
因爲'$ d'的值在函數內部發生了變化。 – Norman
如果你改變它並且按值傳遞,那麼只需要使用函數的返回值就會更簡單。 –