2

私はphp関数を定義しました:

function my_function($text = '', $relative = false, $icon = true) {
//do something
}

デフォルト値で期待どおりに機能します。しかし、1つの変数の値を変更したい場合、それは機能しません。

my_function($icon = false); // this doesn't change anything

変更を有効にするには、すべての変数を使用して呼び出す必要があります。

my_function($text = '', $relative = false, $icon = false); // this changes the output

私はphp5.4.1とWordpressで作業しています。私は何を間違えますか?ありがとう。

4

4 に答える 4

3

変更する引数の左側 (関数シグネチャ内) にデフォルト引数の値を指定する必要があります。

したがって、次の関数が与えられます。

function my_function($text = '', $relative = false, $icon = true) {
//do something
}

ここではいくつかの例を示します。

// $text = "foo", $relative = false, $icon = true
my_function("foo"); 

// $text = "", $relative = true, $icon = true
my_function("", true) 

// $text = "", $relative = false, $icon = false
my_function("", false, false) 
于 2012-05-02T21:16:21.537 に答える
2
my_function($icon = false);

PHPではそれができません。できますが、思ったように動作しません。これが行うことは次のとおりです。

  1. $iconに設定false
  2. false最初のパラメータとして渡しますmy_function

3 番目のパラメーターを変更する場合は、最初の 2 つも渡す必要があります。

my_function('', false, true);

注: Xth パラメーターのみを設定するために、そのような関数を呼び出すことができるのは python だと思います。

于 2012-05-02T21:02:11.863 に答える
1

以下のコードを使用できます。

<?php

function my_function($arg = array("text"=>'Default',"relative"=>false,"icon"=>false))
{
  extract($arg);
      $text = isset($text)?$text:"";
      $relative = isset($relative)? $relative : false;
      $icon = isset($icon)? $icon : false;

      //do something

}

my_function(array("icon"=>true));

?>

警告:この方法を使用する場合。変数を初期化するか、変数が存在するかどうかを確認する必要があります。

于 2012-05-02T21:12:17.823 に答える
1

それがPHPの仕組みです。また、関数を呼び出すときは、変数に値が割り当てられるため、望ましくない結果が生じる可能性があるため、パラメーター リストに変数を配置しないでください。したがって、これで問題ありません。

my_function('', false, false);

また:

my_function($text, $relative, $icon);

またはその間の何か、値を割り当てる必要はありません。

于 2012-05-02T20:50:19.923 に答える