func_num_args() funksiyasi argumentlar sonini kaytaradi. Bu funksiya fakat foydalanuvchi funksiyasini aniklash mobaynida foydalanishi mumkin. Agar u funksiyadan tashkarida paydo bulsa, interpretator ogoxlantirish beradi.
Misol. func_num_args() funksiyasidan foydalanish
function DataCheck() {
$n = func_num_args();
echo "Funksiya argumentlari soni $n";
}
DataCheck();
// katorni keltiradi "0 funksiya argumentlari soni"
DataCheck(1,2,3);
// katorni keltiradi "3-funksiya argumentlari soni" ?>
func_get_arg funksiyasi (argument_rakami tulaligicha) argumentni uzgarishlar ruyxatidan argumentlar funksiyasiga kaytaradi, uning tartib rakami func_get_arg parametri bilan beriladi. Funksiya argumentlari noldan boshlab xisoblanadi. func_num_args() kabi bu funksiya fakat biron-bir funksiyani aniklashda foydalaniladi.
Argument rakami funksiyaga uzgargan argumentlar sonidan ortib ketishi mumkin emas. Aks xolda ogoxlantirish umumlashtiriladi va func_num_args() funksiyasiga Faise kiymat kaytadi.
Ma’lumotlarni tekshirish uchun funksiyaga uning argumentlarini tuzamiz. Agar funksiyaning birinchi argumentы - butun son, ikkinchisi - kator bulsa, tekshirish muvaffakiyatli utdi, deb xisoblaymiz.
Misol. Ma’lumotlar tipini, uning argumentlarini tekshirish
function DataCheck(){
$check =true;
$n = func_num_args();
/* funksiyaga uzgargan argumentlar sonini tekshiramiz, birinchi uzgargan argument butun sonmi-yukmi */
if ($n>=1) if (!is_int(func_get_arg(0)))
$check = faise;
/* tekshiramiz, ikkinchi uzgargan argument katormi-yukmi */
if ($n>=2)
if (!is_string(func_get_arg(1)))
$check = false;
return $check;
}
if (DataCheck(123,"text"))
echo "Tekshiruv tugri utdi<Ьg>";
else echo "ma’lumotlar shartlarni tsondirmaydi
";
if (DataCheck(324))
echo "Tekshiruv tugri utdi<Ьg>";
else echo "ma’lumotlar shartlarni tsondirmaydi
";
?>
func_get_args() funtsiyasi argumentlar ruyxatidan tashkil topgan massiv tsaytaradi. Massivning x,ar bir elementi argumentga, funksiya uzgarishiga tuFri keladi. Agar funksiya foydalanuvchi funksiyasi anitsligidan tashtsarida foydalanilsa ogo^lantirish umumlashtiriladi.
Avvalgi misolni kuchiramiz, bu funksiyadan foydalanamiz. Funksiyani x,arakatlantiruvchi juft argument butun son ekanligini tekshiramiz:
Misol:
function DataCheck(){
$check =true;
$n = func_num_args();
// funksiyaga uzgargan argumentlar soni
$args = func_get_args();
// funksiya argumentlari massivi
for ($i=0;$i<$n;$i++){
$v = $args[$i];
if ($i % 2 == 0){
if (!is_int($v)) $check = false;
// tekshiramiz, juft argument butunmi-yutsmi
}
}
return $check;
}
if (DataCheck(array("text", 324)))
echo "Tekshiruv tugri utdi<Ьg>";
else echo "Ma’lumotlar shartlarni tsonitstirmaydi
"; ?>
Bundan, func_num_args(), func_get_arg() va func_get_args() funksiya kombinatsiyasi funksiyalar uzgaruvchan argumentlar ruyxatiga ega bula olishi uchun foydalaniladi. Bu funksiyalar fatsat PHP4 ga kiritilgan. PHP3 da shunday natijaga erishish uchun, argument sifatida massiv funksiyasidan foydalanish mumkin buladi. Masalan, x,ar bir tots funksiyalar parametri butun sonligini tekshiruvchi skriptni tsuyidagicha yozish mumkin:
function DataCheck($params){ $check =true;
$n = count($params);
// funksiyaga uzgargan argumentlar soni
for ($i=0;$i<$n;$i++){
$v = $params[$i];
if ($i % 2 !== 0){
// tekshiramiz, tok argument butunmi-yukmi
if (!is_int($v)) $check = false;
}
}
return $check;
}
if (DataCheck("text", 324))
echo "Tekshiruv tuFri utdi<Ьg>";
else echo "Ma’lumotlar shartlarni koniktirmaydi<Ьg>";
?>
Funksiyalar ichida uzgaruvchilardan foydalanish
Global uzgaruvchilar
Funksiyalar ichida undan tashkarida berilgan uzgaruvchilardan foydalanish uchun, bu uzgaruvchilarni global deb e’lon kilish kerak. Buning uchun funksiya tanasida uning nomlarini global kalit suzidan keyin keltirish lozim buladi:
global $var1, $var2;
$a=1;
function Test_g(){
global $a;
$a = $a*2;
echo ' $a=',$a funksiya ishida natija;
}
echo 'funksiyadan tashkarida $a=',$a,', ';
Test_g();
echo "
";
echo funksiyadan tashkarida $a=',$a,', ';
Test_g();
?>
Do'stlaringiz bilan baham: |