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

動的な値は、関数の引数の任意の場所にすることができ、最初のものにすることもできます。ただし、関数を呼び出すたびにオプションのパラメーターを指定する必要がないように、最後にそれらを保持することをお勧めします。

また、関数内のエコーを 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 に答える