Четверг
16 Май 24, 18:38
BYDEM.RU Web Стандарт
Приветствую Вас Гость | RSS
Главная Каталог статей Регистрация Вход
Меню сайта

Категории каталога
PHP [18]
HTML [3]
CSS [2]
Общая информация [7]
MySQL [3]

Мини-чат
200

Главная » Статьи » Учебники » PHP

функции часть 2

Function MSort (&$Arr, $NeedSort=1)
{
// сортируем массив в зависимости от $NeedSort...
}
Теперь в самой программе можно написать:
MSort($my_array,0); // сортируем по возростанию
MSort($my_array); // сортирует по убыванию, так как второй параметр у нас задан по умолчанию
Это можно было записать и как MSort($my_array,1);
!!! Значения переменных по умолчанию должны задаваться справа налево, и недопустимо, когда после такого аргумента шёл обычный аргумент.
Понятно? =) Сомниваюсь... Пишите что именно в коментах...
Вот такой пример работать не будет:

function MSort($NeedSort=1, &$arr)
{
.....
}
MSort(,$my_array);
Вобщем облом... не получается =) Надо делать как в первом случае.

Передача параметров по ссылке.
Каков же механизм передачи функцией аргументов?
Рассмотрим на примере:
function test($a)
{
echo "$a\\n";
$a++;
echo "$a\\n";
}
...
$num=10;
test ($num);
echo $num;

Попрошу заметить, что эта функция не возвращает никакого значения.
Начинается всё с того, что создается локальная переменная $a, и ей присваивается значение 10 => печатается => $a увеличаивается на 1 и снова печатается.
При последующей распечатке переменной $num напишет 10, а не 11, так как $a- просто копия $num. А с копией можно делать почти всё... =)
Честно признаюсь, сам не доконца понял, но запомнил и применяю =)
Если же всё-таки стоит задача поизмываться именно с самой переменной, а не с её копией, то надо при передаче аргумента функции перед его именем поставить символ & .
Рассмотрим на примере:

function test($a)
{
echo "$a\\n";
$a++;
echo "$a\\n";
}
$num=10;
test(&$num); // вот она эта закарлючка перед $num
echo $num;

Такой метод передачи называется "передачей по ссылке".
Лично я, предпочитаю делать так:

function test(&$a) // вот тут обратить внимание
{
echo "$a\\n";
$a++;
echo "$a\\n";
}
...
$num=10;
test($num);
echo $num; // выводит 11
!!!! В качестве параметров передаваемых по ссылке можно использовать только переменные. НО не конкретные значения.
Но случаются случаи, когда мы не знаем сколько параметров входит в функцию.
Рассмотрим пример:
Пусть функция выведет все поступившие в неё параметры лесенкой.

function myecho()
{
for($i=0; $i<func_num_arg(); $i++)
{
for($j=0; $j<$i; $j++) echo " ";
echo func_get_arg($i)."<br>\\n";
}
}
myecho("петя","лена","жорик","иваныч");

* int func_num_args() возвращает общее число аргументов, переданых функции при вызове.
* mixed func_get_arg(int $num) возвр

Категория: PHP | Добавил: bydem (15 Сен 07)
Просмотров: 590 | Рейтинг: 0.0/0 |
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Форма входа

Поиск

Друзья сайта

Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0


Copyright MyCorp © 2024