1

当我指定默认值时,我似乎无法让 php 接受参数的动态值。我在这里读到默认值需要在函数的末尾,我已经这样做了。

$isbilling = true;

function retrieve_address($dbh, $customer_id, $isbilling=false){
echo $isbilling; //false
}

我在这里做错了什么?

4

3 回答 3

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
于 2013-02-19T08:24:56.737 回答
3

您已将 $isbilling 的默认值设置为 false,并且在调用 $isbilling 参数时没有将任何内容传递给它(我假设,因为您实际上并没有发布该部分)。

试试这个:

$isbilling = true;

function retrieve_address($dbh, $customer_id, $isbilling=false){
    echo $isbilling; //false
}

retrieve_address($dbh, $customer_id, $isbilling);
于 2013-02-19T08:25:14.920 回答
0

那么动态值可以是函数参数中的任何位置,也可以是第一个。但最好的做法是将它们保留在最后,这样就不必在每次调用函数时都指定可选参数。

我也把函数里面的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
}
于 2013-02-19T08:31:17.353 回答