PHP функции с параметри по подразбиране

cloxy

Super Moderator
Екип
Имаме следната тестова PHP функция:

Код:
<?php

function test($var1 = 'aaa', $var2 = 'bbb') {
  echo($var1.'/'.$var2);
}

?>

Функцията приема два параметъра, които имат стойности по подразбиране. Можем да извикаме функцията по следния начин:

Код:
<?php test(); ?>

И ще ни върне: aaa/bbb

Можем и да параметризираме функцията с наши стойности, примерно 'yyy' и 'zzz' :

Код:
<?php test('yyy', 'zzz'); ?>

И ще ни върне yyy/zzz

Въпросът ми е възможно ли е и как можем да зададем само втория параметър на функцията ние, като първият си остане по подразбиране? Пробвах примерно така, но не работи:

Код:
<?php test(null, 'zzz'); ?>

Пробвах и да пропускам първия параметър, но нарушавам синтаксиса.

Някакви идеи?
 
За: PHP функции с параметри по подразбиране

За: PHP функции с параметри по подразбиране

PHP: Function arguments - Manual

Виж пример 5 и 6
принципно и на мен това ми дойде на ум веднага след като ти видях въпроса.
 
За: PHP функции с параметри по подразбиране

За: PHP функции с параметри по подразбиране

Код:
function test($var1 , $var2) {
   $output = ($var1.'/'.$var2);
   return($output);
}


echo test("", "blabla");
 
За: PHP функции с параметри по подразбиране

За: PHP функции с параметри по подразбиране

А ако искаш и при първия случай да работи ще и сложиш по един if($var1 == ""){$var1 = "aaa";} if($var2 == ""){$var2 = "bbb";}
Код:
function test($var1 , $var2) {
   if($var1 == ""){
      $var1 = "aaa";
   } 
   if($var2 == "")
      {$var2 = "bbb";
   }
   $output = ($var1.'/'.$var2);
   return($output);
}

echo test("", "blabla");
 
Re: За: PHP функции с параметри по подразбиране

Re: За: PHP функции с параметри по подразбиране

PHP: func_get_args - Manual :wink:
 
За: PHP функции с параметри по подразбиране

За: PHP функции с параметри по подразбиране

Аз съм по скоро за асоциативен масив, но това е защото съм CakePHP чедо и там нещата са точно така 😉
 
Re: PHP функции с параметри по подразбиране

Това го гледах. Странно е, че няма начин да 'пропускаш' параметри.

Другият вариант е да се вкарва чрез асоциативен масив.

niama nachin mai. Za tova pitah predi 2-3 meseca. Asoc. masiv e niakakvo reshenie.
 
За: PHP функции с параметри по подразбиране

За: PHP функции с параметри по подразбиране

function test($var1 = 'aaa', $var2 = 'bbb') {
if(empty($var1))
$var1 = 'aaa';

if(empty($var2))
$var2 = 'bbb';
echo($var1.'/'.$var2);
}

test('',555);

така върши ли ти работа?
 
Последно редактирано:
Re: PHP функции с параметри по подразбиране

То е ясно, че има много начини да се накара да проработи. Мисълта ми беше дали няма начин от самия език синтактично да стане, но изглежда че не.
 

Back
Горе