2013-06-04 5 views
-4

Если у вас есть функция, как так:Как сделать параметры аргументов функции?

function somefunc ($data, $something) { 
// 
} 

При вызове функции, как это:

somefunc($data); 

он посылает говоря об ошибке, что отсутствует аргумент 2. Есть ли способ, чтобы сделать второй аргумент необязательный? Благодаря

ответ

2

Try

function somefunc ($data, $something = null) { 
// 
} 
+0

У вас может даже быть $ something = '', хотя Null, вероятно, является лучшим решением. – Ryan

7

От the manual:

По умолчанию аргумент значения

Функция может определять C++ - значения стиля по умолчанию для скалярных аргументов следующим образом:

Пример # 3 Использование параметров по умолчанию в функциях

<?php 
function makecoffee($type = "cappuccino") 
{ 
    return "Making a cup of $type.\n"; 
} 
echo makecoffee(); 
echo makecoffee(null); 
echo makecoffee("espresso"); 

?> 

Приведенный выше пример выведет:

Making a cup of cappuccino. 
Making a cup of . 
Making a cup of espresso. 
+2

Вторичный эффект этого ответа на самом деле жаждет кофе после прочтения его - хитрый тактик! – nickhar

0

Для этого я хотел бы использовать массивы в качестве параметров. Это одна из вещей, которые делает PHP очень хорошо.

function foo(array $options = array()) 
{ 
     // you can set the defaults here 
     $default = array('data'=>false,'something'=>'whatever'); 
     $options = array_merge($default,$options); 
} 

Поскольку функция foo() применяется по умолчанию в массив вы больше не должны выполнить isset() проверку, чтобы увидеть, если ключ отсутствует.

Вы можете позвонить по телефону foo() следующим образом.

foo(); // pure defaults 
foo(array('data'=>'stuff')); 
Смежные вопросы