+ -
当前位置:首页 → 问答吧 → PHP 的自定义函数

PHP 的自定义函数

时间:2011-09-28

来源:互联网

function mzrui_display($t_name,$id)
{}

我想把第二个参数可选

就是在调用的时候可以只给一个参数吗

mzrui_display('1111') 第二个参数可以给,也可以不给???

我现在测试的会报错 Warning: Missing argument 2 要怎么解决??


还是参数必须一一对应???

作者: SHANDIANDIAN   发布时间: 2011-09-28

function mzrui_display($t_name,$id='')
{}
你给它一个默认值就行了。随便设。

作者: jordan102   发布时间: 2011-09-28

引用 1 楼 jordan102 的回复:

function mzrui_display($t_name,$id='')
{}
你给它一个默认值就行了。随便设。

+1

作者: yhkyo   发布时间: 2011-09-28

楼上说的对, 给他一个默认值 如果调用时想赋值就写 不想赋值就只填第一个参数

作者: niuchaokf524   发布时间: 2011-09-29

引用楼主 shandiandian 的回复:
function mzrui_display($t_name,$id)
{}

我想把第二个参数可选

就是在调用的时候可以只给一个参数吗

mzrui_display('1111') 第二个参数可以给,也可以不给???

我现在测试的会报错 Warning: Missing argument 2 要怎么解决??


还是参数必须一一对应???


这种写法是不符合规范的,建议要给参数赋默认值,例如改为:
function mzrui_display($t_name,$id=-1)
{}

或者干脆参数也不用了,直接使用func_get_args,改为:

PHP code

function mzrui_display()
{
   $args = func_get_args();
   $args_num = func_num_args();
   if($args_num == 0){
      echo '请输入参数';
      exit;
   }
   if($args_num == 1){
      $t_name = $args[0];
   }
   if($args_num >= 2){
      $t_name = $args[0];
      $id = $args[1];
   }
}




作者: skyaspnet   发布时间: 2011-09-29

附函数参考:


func_get_args
(PHP 4, PHP 5)

func_get_args — Returns an array comprising a function's argument list

说明
array func_get_args ( void )
Gets an array of the function's argument list. 

This function may be used in conjunction with func_get_arg() and func_num_args() to allow user-defined functions to accept variable-length argument lists. 

返回值
Returns an array in which each element is a copy of the corresponding member of the current user-defined function's argument list. 

更新日志

版本 说明 
5.3.0 This function can now be used in parameter lists.  
5.3.0 If this function is called from the outermost scope of a file which has been included by calling include() or require() from within a function in the calling file, it now generates a warning and returns FALSE.  


错误/异常
Generates a warning if called from outside of a user-defined function. 

范例

Example #1 func_get_args() example

<?php
function foo()
{
  $numargs = func_num_args();
  echo "Number of arguments: $numargs<br />\n";
  if ($numargs >= 2) {
  echo "Second argument is: " . func_get_arg(1) . "<br />\n";
  }
  $arg_list = func_get_args();
  for ($i = 0; $i < $numargs; $i++) {
  echo "Argument $i is: " . $arg_list[$i] . "<br />\n";
  }
}

foo(1, 2, 3);
?> 
以上例程会输出:

Number of arguments: 3<br />
Second argument is: 2<br />
Argument 0 is: 1<br />
Argument 1 is: 2<br />
Argument 2 is: 3<br />


Example #2 func_get_args() example before and after PHP 5.3

test.php
<?php
function foo() {
  include './fga.inc';
}

foo('First arg', 'Second arg');
?>

fga.inc
<?php

$args = func_get_args();
var_export($args);

?> 
Output previous to PHP 5.3: 

array (
  0 => 'First arg',
  1 => 'Second arg',
)
Output in PHP 5.3 and later: 

Warning: func_get_args(): Called from the global scope - no function
context in /home/torben/Desktop/code/ml/fga.inc on line 3
false


Example #3 func_get_args() example of byref and byval arguments

<?php
function byVal($arg) {
  echo 'As passed : ', var_export(func_get_args()), PHP_EOL;
  $arg = 'baz';
  echo 'After change : ', var_export(func_get_args()), PHP_EOL;
}

function byRef(&$arg) {
  echo 'As passed : ', var_export(func_get_args()), PHP_EOL;
  $arg = 'baz';
  echo 'After change : ', var_export(func_get_args()), PHP_EOL;
}

$arg = 'bar';
byVal($arg);
byRef($arg);
?> 
以上例程会输出:


As passed : array (
0 => 'bar',
)
After change : array (
0 => 'bar',
)
As passed : array (
0 => 'bar',
)
After change : array (
0 => 'baz',
)

作者: skyaspnet   发布时间: 2011-09-29

func_num_args
(PHP 4, PHP 5)

func_num_args — Returns the number of arguments passed to the function

说明
int func_num_args ( void )
Gets the number of arguments passed to the function. 

This function may be used in conjunction with func_get_arg() and func_get_args() to allow user-defined functions to accept variable-length argument lists. 

返回值
Returns the number of arguments passed into the current user-defined function. 

更新日志

版本 说明 
5.3.0 This function can now be used in parameter lists.  
5.3.0 If this function is called from the outermost scope of a file which has been included by calling include() or require() from within a function in the calling file, it now generates a warning and returns -1.  


错误/异常
Generates a warning if called from outside of a user-defined function. 

范例

Example #1 func_num_args() example

<?php
function foo()
{
  $numargs = func_num_args();
  echo "Number of arguments: $numargs\n";
}

foo(1, 2, 3);  
?> 
以上例程会输出:

Number of arguments: 3


Example #2 func_num_args() example before and after PHP 5.3

test.php
<?php
function foo() {
  include './fna.php';
}

foo('First arg', 'Second arg');
?>

fna.php
<?php

$num_args = func_num_args();
var_export($num_args);

?> 
Output previous to PHP 5.3: 

2
Output in PHP 5.3 and later will be something similar to: 

Warning: func_num_args(): Called from the global scope - no function
context in /home/torben/Desktop/code/ml/fna.php on line 3
-1

作者: skyaspnet   发布时间: 2011-09-29

相关阅读 更多