我如何在PHP中的第一个可选参数设置后,一个可选的参数(How do i set an option

2019-09-21 01:39发布

我是相当新的PHP和我试图找出如何设置可选参数的第一个可选参数后?

例如,我有以下代码:

function testParam($fruit, $veg='pota',$test='default test'){
echo '<br>$fruit = '.$fruit;
echo '<br>$veg = '.$veg;
echo '<br>Test = '.$test;
}

如果我做以下电话:

echo 'with all parama';
testParam('apple','carrot','some string');
//we get:
//with all parama
//$fruit = apple
//$veg = carrot
//Test = some string

echo '<hr> missing veg';
testParam('apple','','something');
//we get:
//missing veg
//$fruit = apple
//$veg = 
//Test = something

echo '<hr> This wont work';
testParam('apple',,'i am set');

我想尝试拨打电话,这样在最后一个例子我展示“POTA”作为默认$蔬菜参数,但传递到$测试“我设置”。

我想我可以通过0到$蔬菜然后分支在代码中说,如果$蔬菜= 0,则使用“POTA”只是想知道,如果有一些其他的语法,我不能找到它php.net什么。

Answer 1:

你不能做你想只是默认参数是什么。 默认值仅适用于缺少论据,只有最后一个参数(一个或多个)可能会缺失。

您可以添加像线

  $vega = $vega ? $vega : 'carrot';

并调用功能

testParam('apple',false,'something');

或者使用传递参数与所述参数名作为关键字数组的更一般的技术。 就像是

function testparam($parms=false) {
    $default_parms = array('fruit'=>'orange', 'vega'=>'peas', 'starch'=>'bread');
    $parms = array_merge($default_parms, (array) $parms);
    echo '<br>fruit  = $parms[fruit]';
    echo '<br>vega   = $parms[vega]';
    echo '<br>starch = $parms[starch]';
}

testparm('starch'=>'pancakes');
//we get:
//fruit = orange
//vega  = peas
//starch = pancakes

这是一个有点冗长,但它也更加灵活。 您可以添加参数,默认不改变现有呼叫者。



Answer 2:

不幸的是,你不能这样做,在PHP。

你必须为0,或通过null ,或者一些其它的值,然后如果该值为0或null ,将其更改为默认值。

这里是应该给你更多的信息,另一个问题。



Answer 3:

这是我使用的技术:

function testParam($fruit, $veg='pota', $test='default test') {

    /* Check for nulls */
    if (is_null($veg))  { $veg = 'pota'; }
    if (is_null($test)) { $test = 'default test'; }

    /* The rest of your code goes here */
}

现在使用的任何可选参数的默认值,只是通过NULL像这样。

testParam('apple', null, 'some string');

在这个例子中, $veg将等于'pota'

此代码示例的缺点是,你必须两次编码的默认值。 你可以很容易地设置默认值参数声明无效,所以你不必两次编码的默认值,但是,我喜欢把它两次,因为我的IDE给我参数暗示立即显示我的默认值在函数签名。



文章来源: How do i set an optional parameter in PHP after the first optional parameter