当我指定了默认值时,我似乎无法让php接受参数的动态值。我已经读过here,默认值需要在函数的末尾,我已经完成了。
$isbilling = true;
function retrieve_address($dbh, $customer_id, $isbilling=false){
echo $isbilling; //false
}
我在这里做错了什么?
答案 0 :(得分:3)
$isbilling = true;
function retrieve_address($dbh, $customer_id, $isbilling=false){
echo $isbilling; //false
}
// you have to call your function
retrieve_address('dbhval', 'CUSTID', $isbilling); // will print true
retrieve_address('dbhval', 'CUSTID'); // will print false
答案 1 :(得分:2)
您已将$ isbilling的默认值设置为false,并且在调用它时没有向$ isbilling参数传递任何内容(我假设,因为您实际上没有发布该部分)。
试试这个:
$isbilling = true;
function retrieve_address($dbh, $customer_id, $isbilling=false){
echo $isbilling; //false
}
retrieve_address($dbh, $customer_id, $isbilling);
答案 2 :(得分:0)
动态值可以是函数参数中的任何位置,也可以是第一个。但最佳做法是将它们保留在最后,因此每次调用函数时都不必指定可选参数。
我也改变了函数内部的回声返回,这也是一种最佳实践。
$isbilling = true;
function retrieve_address($dbh, $customer_id, $isbilling=false){
return $isbilling; //false
}
$returned = retrieve_address($dbh, $customer_id, $isbilling);
因此,您也可以执行以下操作
// will return true or false
if(retrieve_address($dbh, $customer_id, $isbilling)){
// if it is true, your code
}else{
// if it is false
}
或
$returned = retrieve_address($dbh, $customer_id, $isbilling);
if(returned)){
// if it is true, your code
}else{
// if it is false
}