3

これは学術的または役に立たないトピックのように思えるかもしれませんが、私は興味があります。

PHP で Web ページを開発するとき、いくつかの引数を取る関数を呼び出す必要があることがよくあります。関数の仕様 (php.net または定義した関数の場合はインクルード ファイル) を頻繁に調べて、変数とは何か、変数の順序とデフォルト値などを確認する必要があります。 . 共感できる方も多いと思います。

次のように定義された関数:

function do_something_awesome ($people_array, $places_recordset, $num_cycles, $num_frogs,
  $url = '?default=yes', $submit_name = 'default_submit_label') {
  ...
}

呼び出されると、次のようになります。

$result = do_something_awesome($names, $rsTowns, $c, $f);

私の質問は次のとおりです。このような関数呼び出し中に、各変数に対応する引数を思い出させる方法でコードを書きたいと思います。次のように関数を呼び出すことは合法ですか?

$result = do_something_awesome($people_array = $names, $places_recordset = $rsTowns, 
  $num_cycles = $c, $num_frogs = $f);

PHP でない場合、この方法でメソッド呼び出しを行うことができる他の言語はありますか?

4

3 に答える 3

1

最初の質問に答えるには:

私の質問は次のとおりです。このような関数呼び出し中に、各変数に対応する引数を思い出させる方法でコードを書きたいと思います。

私の知る限り、多くの PHP コーダーは、連想配列を唯一の引数として渡すことでそれを行っています。ただし、呼び出された関数内で独自の変数チェックを行う必要があります。

$result = do_something_awesome(array(
    'people_array' => $names,
    'places_recordset' => $rsTowns, 
    'num_cycles' => $c, 
    'num_frogs' => $f
));

はどうかと言うと:

次のように関数を呼び出すことは合法ですか?

PHPエラーは発生しませんが、実際に行っていることは次のとおりです。

$result = do_something_awesome( expression, expression, expression, expression );

参照: PHP 関数の引数

PHP は、順序を入れ替えようとしたときに、$people_array = ...または$num_frogs = ...を対応する場所に配置することを知りません。さらに、DCoder が言ったように、これらの式は実際には現在のスコープで行われ、ユーザーに知らせずに既存の変数を変更します。

于 2013-10-03T20:20:20.440 に答える
0

これを試すことができます:

$bas = 'This is passed to the function.';
$bar = 'This will be modified.';

function foo($bar)
{
    echo $bar;
}

foo($bar = $bas);
echo $bar;

このスクリプトからの出力は'This is passed to the function.This is passed to the function.'. DCoderが言ったように、それらを使用でき、完全に合法ですが、関数の引数と同じ名前の他の変数がある場合、これはそれらを上書きします(この場合、元の変数は上書きされました$bar)。

于 2013-10-03T18:16:08.290 に答える