当我指定默认值时,我似乎无法让 php 接受参数的动态值。我在这里读到默认值需要在函数的末尾,我已经这样做了。
$isbilling = true;
function retrieve_address($dbh, $customer_id, $isbilling=false){
echo $isbilling; //false
}
我在这里做错了什么?
$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
您已将 $isbilling 的默认值设置为 false,并且在调用 $isbilling 参数时没有将任何内容传递给它(我假设,因为您实际上并没有发布该部分)。
试试这个:
$isbilling = true;
function retrieve_address($dbh, $customer_id, $isbilling=false){
echo $isbilling; //false
}
retrieve_address($dbh, $customer_id, $isbilling);
那么动态值可以是函数参数中的任何位置,也可以是第一个。但最好的做法是将它们保留在最后,这样就不必在每次调用函数时都指定可选参数。
我也把函数里面的echo改成了return,这也是一个最佳实践。
$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
}