Не сте регистриран! Регистрирайте се БЕЗПЛАТНО, за да използвате услугите на сайта!

   Рубрики
 
 
 
 

 Форуми
» SEO и оптимизация
» Всичко за PHP и Perl
» Всичко за C, C++ и .NET
» Всичко за Java и JSP
» Всичко за SQL и MySQL
» Всичко за XHTML и CSS
» Презентация на сайтове
 Функции с неопределен и неограничен брой входни параметри
  1. Функции с неопределен и неограничен брой входни параметри
     
Автор  plamenSm (27.03.2008 09:47)  съобщение до автора
Погледнат  1581 пъти  добави към любими
Оценка  добави коментар
Гласове  2  изпрати на приятел
Коментари  (0)  абонирай се за PHP
    Страница 1 / 1

 



Понякога се налага да създаваме функции които могат да се извикват с различен брой параметри, като самата функция има грижата да определи броя параметри и съответно да ги използва според заложената в нея логика. Обикновено в процеса на разработка, когато не е ясен броя на необходимите параметри, повечето програмисти добавят входен параметър когато се наложи и променят кода на функцията.


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

CODE
1
2
3
4
5
6
<?php
function create_array($szItem1, $szItem2, $szItem3)
{
   
return array($szItem1, $szItem2, $szItem3);
}
?>

Функцията ще ни върши работа перфектно, ако сме сигурни, че няма да се наложи да я извикваме с 4, 5 или повече параметри.

За щестие има просто решение и то е използването на няколко стандартни PHP функции. Можем да напишем функция без да описваме входните параметри. След това когато извикваме функцията от различни места в кода, можем да подаваме различен брой параметри. Ето как изглежда преработения по този начин код на горния пример:

CODE
1
2
3
4
5
6
<?php
function create_array()
{
   
return func_get_args();
}
?>

Всичко, което трябва да направим е да вземем параметрите, които са предадени при извикването на функцията и да ги върнем като е масив. Приемаме, че не сме на ясно колко параметъра ще получи функцията. Тук е мястото да разгледаме вградената PHP функция func_get_args(). Тази функция връща всички входни параметри в масив, подредени по реда на подаването им.

Ето пример за извикване на горната функция с 4 параметъра:

CODE
1
2
3
<?php
create_array('banana', 'Orange', 'Apple', 'Grape');
?>

Освен това е допустимо и изрично дефениране на аргументи, които се използват по нормалния начин. При извикването на такава функция първо трабва да се изредят стойностти за изрично дефинираните параметри и след тях да се поставят останалите недефинирани параметри. Това е важна подробност, защото програмната логика на функцията нормално ще използва изричните параметри по име, а останалите по индекс.

CODE
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
function create_array($iLimit)
{
   
$aArgs = array();
   
   
for($iIndex = 1; $iIndex < func_num_args(); $iIndex++)
    {
       
$szItem = func_get_arg($iIndex);
       
       
if(strlen($szItem) <= $iLimit)
        {
           
$aArgs[] = $szItem;
       
}
    }
   
   
return $aArgs;
}
?>

Горния вариянт има изрично дефиниран параметър $iLimit. Функцията ще върне масив от подадените след $iLimit стрингове, които имат дължина най-много стойността на $iLimit. Ако извикаме функцията така:

CODE
1
2
3
<?php
$aShortNamedFruits = create_array( 5, 'banana', 'Orange', 'Apple', 'Grape');
?>

Резултатът в $aShortNamedFruits ще бъде масив ('Apple', 'Grape'). Използвахме още 2 от вградените PHP функции:

  • func_num_args() – връща общия брой входни параметри
  • func_get_arg( $index ) – връща стойността на параметър номер $index

Важно е да се знае, че изрично дефинираните параметри също влизат в масива с параметрите. Забележете в примера, че цикълът започва от инндекс 1, а не от 0. Това е така, за да прескочим параметъра $iLimit.

И така тази фуннкция е готова напълно. Предимството на този подход е, че няма да се налага да се връщате и да я променяте, когато се наложи да подавате различен от първоначално планирания брой параметри. Друго предимство е, че можете да извиквате функцията на различни места в останалия код за да отделите стрингове със зададена максимална дължина (не е задължително да са плодове естествено).

Ето, че живота стана малко по-лесен!



   


Ключови думи: PHP функция неограничен брой параметри


Още уроци от тази рубрика


 
  • Подобни теми от myLinks
 

 1 посетител чете този урок (0 потребители и 1 гост)  
Активни потребители: ---
   
  

Еmail  
 

 

 
  • Интересно от Софтуер
 



IT-PLACE.NET © 2004 - 2008