Hi,
I notice that in some PHP built in functions such as str_replace there are optional input variables. Can I have have optional input variables in my own functions? If so, how?
Thanks, Brian
Hi,
I notice that in some PHP built in functions such as str_replace there are optional input variables. Can I have have optional input variables in my own functions? If so, how?
Thanks, Brian
The first way is to use default values for some arguments:
function doStuff($required, $optional = '', $optional2 = '') {
...
}
Now you just include a default value and then someone can do:
doStuff('foo');
doStuff('foo', 1);
doStuff('foo', 2, 3);
You need to choose an appropriate default value if the field isn't specified or to indicate that no value was set. Typical examples are ''
, 0
, false
, null
or array()
.
Or you don't need to specify them at all with func_get_args()
:
function doStuff() {
print_r(func_get_args());
}
func_get_args()
can be used with explicit arguments (the first example) as well.
Another alternative you can do is this...
EDIT
somewhat useful function now..
function getLongestString() {
$strings = func_get_args();
$longestString = '';
foreach($strings as $string) {
if (strlen($longestString) < strlen($string)) {
$longestString = (string) $string;
}
}
return $longestString;
}
Which you could then use like this
echo getLongestString('hello', 'awesome'); // awesome
Whilst this may not have been what exactly you were wanting, it is still good to know and solves the question of optional function inputs.
An additional option that allows arbitrary ordering of arguments:
function my_function($arguments) {
if($arguments['argument1']) {
// do something
}
if($arguments['argument2'] == 'LOLCAT') {
// do something else
}
}
my_function(array('argument1' => 1, 'argument2' => 'LOLCAT'));