簡體   English   中英

PHP將默認參數傳遞給函數

[英]PHP pass default argument to function

我有一個PHP函數,像這樣:

function($foo = 12345, $bar = false){}

我想做的是調用這個函數,使用$ foo傳遞的默認參數,但是$ bar設置為true,就像這樣(或多或少)

function(DEFAULT_VALUE, true);

我該怎么做? 如何在不知道該值的情況下將參數作為函數的默認值傳遞?

提前致謝!

這在PHP中本身不可能。 有一些解決方法,比如使用數組來傳遞所有參數而不是一行參數, 但它們有很大的缺點

我能想到的最佳手動解決方法是定義一個具有任意值的常量,該值不會與實際值發生沖突。 例如,對於永遠不能為-1的參數:

define("DEFAULT_ARGUMENT", -1);

並測試:

function($foo = DEFAULT_ARGUMENT, $bar = false){}

反過來說:

function($bar = false, $foo = 12345){}

function(true);

通常的方法是if (is_null($foo))函數將其替換為默認值。 使用null,空字符串等來“跳過”參數。 這就是大多數需要跳過參數的內置PHP函數的功能。

<?php
function($foo = null, $bar = false)
    {
    if (is_null($foo))
        {
        $foo = 12345;
        }
    }
?>

PHP無法做到這一點,所以你必須解決它。 由於您已經需要當前形式的函數,只需定義另一個:

function blah_foo($bar)
{
    blah(12345, $bar);
}

function blah($foo = 12345, $bar = false) { }

我認為,最好根據最頻繁改變的論點排序,例如$bar ,我們把它放在第一位,

function foo( $bar = false, $foo = 12345){
// blah blah...
}

所以當你想將$bar傳遞給true ,並將$foo傳遞給12345 ,你會這樣做,

foo(true);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM