【问题标题】:How to call a function that uses default parameters in php?如何在php中调用使用默认参数的函数?
【发布时间】:2014-05-11 18:35:35
【问题描述】:

假设我有一个类似的函数:

function get_param ($param1, $param2 = 'value2', $start = 0, $end = 0){
   //do stuff with params
}

我在一个有两个 ajax POST-call 到一个 php 脚本的 html 页面中调用它的时间不同。

第一个 ajax 调用只传递第一个参数 (param1),第二个传递所有参数 (param1, param2, start, end)。我试图调用get_param() 函数,始终传递第一个参数(param1),其他参数只要它们在调用内部($_POST 数组内部)。否则函数必须使用他的默认值。

这是我的尝试,但它不起作用。

<?php
if($_POST){
include_once '../includes/functions.php';

if(isset($_POST['param2'])) $param2 = $_POST['param2'];
else $param2 = null;

if(isset($_POST['start'])) $start = $_POST['start'];
else $start = null;

if(isset($_POST['end'])) $end = $_POST['end'];
else $end = null;

$result = get_param($_POST['param1'], $param2, $start, $end);
echo $result;
}
?>

【问题讨论】:

  • 传递 null 仍然是传递 null,你必须要么根本不传递参数,要么想办法做到这一点,想到使用数组。

标签: javascript php ajax function


【解决方案1】:

仅当您没有在其位置传递参数时才使用默认的参数。

$result = get_param($_POST['param1']);

该函数将具有以下值:get_param($_POST['param1'], 'value2', 0, 0)

如果您想使用 null 来执行此操作,例如在您的代码中,那么您需要检查参数的值。像这样:

function get_param ($param1, $param2, $start, $end){
   $param2 = ($param2 == null) ? 'value2' : $param2;
   $start = ($start == null) ? 0 : $start;
   $end = ($end== null) ? 0 : $end;
}

【讨论】:

  • 这不是优雅的解决方案(因为应该在函数声明中输入默认参数,而不是在正文中)。例如对于程序员环境自动提示。但在那种情况下,这是我认为唯一可能的解决方案。 +1。
  • 我同意这并不优雅,但肯定能胜任,谢谢!如果有人有不同的解决方案,我们将不胜感激。
猜你喜欢
  • 2012-06-14
  • 1970-01-01
  • 1970-01-01
  • 2015-06-07
  • 2012-11-20
  • 2011-02-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多