چهارشنبه ۰۸ بهمن ۱۴۰۴

Wednesday, January 28, 2026 GMT +3:30

توابع (Functions) در PHP

php-function

از جمله مباحثی که در اغلب زبان های برنامه نویسی به چشم می خورد مبحث توابع (Functions) است، برنامه نویسان همواره در پی یافتن سریعترین راه حل ها با کمترین کدنویسی و در عین حال رسیدن به مقصودشان به بهینه ترین شکل ممکن هستند و به همین خاطر است که به جای نوشتن چندین و چندباره دستورات، یک بار کدها را به صورت توابع تعریف کرده و بعد از آن در هر بار فراخوانی به تابع ورودی داده و خروجی مد نظرشان را دریافت می کنند، در واقع توابع نقش ماشین های تسهیل کننده را برای برنامه های مختلف بازی می کنند که به کمک آنها می توانیم یک سری از پردازش ها را چندین و چند بار داشته باشیم بدون اینکه بخواهیم برای هر پردازش کدها را جداگانه تعریف کنیم، با این مقدمه کوتاه می پردازیم به ادامه آموزش برنامه نویسی PHP با مبحث توابع (Functions).

تابع (Function) چیست و چه کاربردی دارد؟


در زبان های برنامه نویسی و از جمله در PHP توابع ماشین هایی با ساختار از قبل تعریف شده (بلاکی از کدها) هستند که معمولا با دریافت مقدار یا مقادیری به عنوان ورودی پردازش های مد نظر برنامه نویس را انجام داده و در نهایت حاصل این پردازش ها به عنوان خروجی در ادامه برنامه قابل استفاده است، به این دلیل به تابع "ماشین" می گوییم چون مانند یک دستگاه مواد خام را دریافت کرده و در نهایت محصول تولید می کند و به همین جهت روندهای تکراری با نوشتن یک تابع چندین و چند بار در برنامه قابل انجام است، همچنین به این دلیل گفتیم "معمولا با دریافت مقدار یا مقادیر ورودی" چون در دنیای برنامه نویسی توابع را بدون مقدار ورودی هم می توانیم استفاده کنیم و حتی برخی توابع هیچ مقدار ورودی یا خروجی ندارند و صرفا تغییراتی در متغیرها و آبجکت ها ایجاد می کنند که همه اینها بستگی به نیاز برنامه ما دارد.

انواع مختلف تابع در PHP


در یک تقسیم بندی کلی توابع در PHP به دو صورت زیر قابل تفکیک هستند:
- توابع درونی یا از پیش تعریف شده (Predefined یا Internal (built-in) functions).
- توابع سفارشی یا تعریف شده توسط کاربر (Custom یا User-defined functions).
منظور از توابع درونی مواردی هستند که به صورت ذاتی در مفسر PHP وجود دارند و به کمک آنها می توانیم بدون نوشتن کدهای اضافه با سرعت و سهولت بیشتری روند توسعه برنامه ها را پیش ببریم، به طور مثال تابع str_replace برای جایگزینی مقادیر رشته ای با هم، تابع is_numeric برای بررسی عدد بودن یک مقدار، تابع strtolower برای تبدیل حروف بزرگ انگلیسی به شکل حروف کوچک و موارد فراوانی از این دست که در مفسر PHP از قبل تعریف شده و به همراه هسته برنامه نصب می شوند.
علاوه بر توابع درونی این قابلیت در زبان PHP وجود دارد که تابع سفارشی و شخصی تعریف کنیم، توابع شخصی معمولا با هدف اجرای بلاکی از کدها به دفعات متعدد در قسمت های مختلف برنامه نوشته می شوند و با این کار روندهای مشابه با یک بار کدنویسی چندین و چند بار قابل تکرار هستند، برای نوشتن و استفاده از توابع سفارشی باید قواعد زبان PHP را رعایت کنیم.
در ادامه آموزش ابتدا توابع سفارشی را بررسی و سپس اشاره ای به توابع درونی PHP خواهیم کرد.

شیوه نگارش (Syntax) تعریف تابع در PHP


شیوه نگارش (Syntax) تعریف توابع در PHP شباهت زیادی به دیگر زبان پرکاربرد وب یعنی جاوا اسکریپت دارد، در PHP هم برای تعریف تابع از عبارت function با نمونه فرمت زیر استفاده می کنیم:
<?php
//تعریف تابع
function boldMyText($text){
    $result = '<strong>' . $text . '</strong>';
    return $result;
}
?>
توضیح:
- توابع در PHP با عبارت function و درج نام با شرایطی که در ادامه خواهیم گفت تعریف می شوند، در قسمت () آرگیومنت ها یا همان ورودی های تابع تنظیم می شود و قسمت {} بدنه اصلی و کدهایی که باید تابع اجرا کند را دربر می گیرد، در نهایت نیز معمولا حاصل فرآیند تابع با عبارت دستوری return برگردانده می شود.
- استفاده از آرگیومنت و return در توابع اختیاری است، به عبارتی می توانیم توابعی بدون ورودی یا خروجی داشته باشیم (به فرض تابع صرفا مقدار یک متغیر یا آبجکت را در روند برنامه تغییر دهد).

قواعد نامگذاری توابع در PHP


مانند هر زبان برنامه نویسی PHP نیز از قواعد خاصی برای نامگذاری توابع پیروی می کند، در PHP نام توابعی که تعریف می کنیم می تواند در چارچوب Regex زیر عبارتی دلخواه شامل حروف و اعداد انگلیسی، کاراکتر زیرخط یا Underline "_" یا کاراکترهای non-ASCII (کاراکترهای خارج از استاندارد ASCII) باشد:
^[a-zA-Z_\x80-\xff][a-zA-Z0-9_\x80-\xff]*$
اطلاعات بیشتر در خصوص استاندارد ASCII:
asciitable.com
شروع نامگذاری تابع حتما باید با حروف یا کاراکتر _ باشد، جالب است که با توجه به پشتیبانی از یونیکد UTF-8 (عبارت زیر در دستور باقاعده بالا کاراکترهای non-ASCII را شامل می شود:)
\x80-\xff
استفاده از نام و اعداد فارسی برای تابع در PHP ممکن است، در مجموع توصیه می کنیم برای سازگاری و خواناتر شدن کدها در نامگذاری عموما از کلمات با معنی به صورت تکی یا در ترکیب با سایر کلمات و اعداد انگلیسی استفاده کنیم، به طور مثال چند نام فرضی برای توابع:
clean, changeUser, getNewResult, textType1, textType2, getParam_1, getParam_2
انتخاب نام به صورت صرفا عددی (به فرض 01234) یا دارای کارکترهای خاص (به فرض ^ * #) مجاز نیست و در صورت استفاده خطای مشابه زیر را دریافت خواهیم کرد:
Parse error: syntax error, unexpected '1' (T_LNUMBER), expecting identifier (T_STRING) or '(' in ... .php on line 2

فراخوانی توابع در PHP


برای اینکه توابع در کدها اثرگذار باشند حتما باید آنها را فراخوانی (Call) کنیم، فراخوانی توابع در کدهای PHP معمولا به صورت استفاده مستقیم و بی واسطه است با این حال به فراخور نیاز برنامه ها شیوه های دیگری نیز برای فراخوانی توابع وجود دارد که در ادامه بررسی می کنیم.
- فراخوانی تابع به صورت مستقیم
در این شیوه بسته به هدف یا خروجی که تابع بر می گرداند (رشته، عدد، مقادیر بولین و...) می توانیم از تابع به صورت مستقیم استفاده کنیم، به طور مثال نمونه کد زیر خروجی تابع را که یک رشته متنی است با دستور echo چاپ می کند:
<?php
//تعریف تابع
function boldMyText($text){
    $result = '<strong>' . $text . '</strong>';
    return $result;
}
//متغیر
$text = "این متن را برجسته کن";
//فراخوانی تابع
echo boldMyText($text);
?>
با اجرای این نمونه کد در لوکال هاست یا سرور آنلاین مقادیر متغیر text به صورت برجسته شده با تگ strong در خروجی صفحه چاپ می شود.
مثال دیگر از به کار بردن مستقیم تابع در PHP:
<?php
function checkOddEven($number){
    if($number % 2 == 0){
        return true;  
    }

    return false;
}
if(checkOddEven(2)){
    echo 'عدد زوج است';
} else {
    echo 'عدد فرد است';
}
?>
این تابع زوج یا فرد بودن عدد دریافتی را بررسی و مقادیر true یا false را به عنوان نتیجه برمی گرداند.
- اختصاص تابع به متغیر و فراخوانی با واسطه
در این شیوه ابتدا تابع را به روال متداول تعریف می کنیم و سپس برای فراخوانی نام تابع را به متغیر نسبت داده و در ادامه ی کدها متغیر را با پارامترهای مد نظرمان فراخوانی می کنیم، مثال:
<?php
function myFuncName($arg_1, $arg_2){
    if(!is_numeric($arg_1) || !is_numeric($arg_2)){
        return false;
    }
    
    return $arg_1 + $arg_2;
}
$my_var = "myFuncName";
echo $my_var(2, 4);
?>
خروجی نمونه کد بالا عدد 6 خواهد بود.
- استفاده از تابع درونی call_user_func
شیوه دیگری که PHP برای فراخوانی توابع در اختیارمان قرار می دهد استفاده از متغیر و تابع درونی call_user_func است، به طور مثال:
<?php
function myFuncName($arg_1, $arg_2){
    if(!is_numeric($arg_1) || !is_numeric($arg_2)){
        return false;
    }
    
    return $arg_1 + $arg_2;
}
$var = call_user_func("myFuncName", 2, 4);
echo $var;
?>
خروجی نمونه کد بالا عدد 6 خواهد بود.
- استفاده از تابع eval (توصیه نمی شود)
این امکان در مفسر PHP وجود دارد که یک رشته را به صورت کدهای PHP پردازش و اجرا کنیم، برای این کار تابع درونی eval کاربرد دارد، مثال:
<?php
function myFuncName($arg_1, $arg_2){
    if(!is_numeric($arg_1) || !is_numeric($arg_2)){
        return false;
    }
    
    return $arg_1 + $arg_2;
}
$var = "echo myFuncName(2, 4);";
eval($var);
?>
خروجی نمونه کد بالا عدد 6 خواهد بود.
نکته: استفاده از تابع eval به لحاظ امنیت برنامه ممکن است با خطراتی همراه باشد و بخصوص اگر قرار است که ورودی از سمت کاربر در این تابع اجرا شود باید حتما قبلا رشته ارسالی کاملا اعتبارسنجی و ایمن سازی شود.

آرگیومنت (Argument) تابع


در برنامه نویسی با زبان PHP استفاده از توابع می تواند با و بدون ورودی باشد اما معمولا توابع را با یک یا چند ورودی (جدا شده با علامت کاما ",") تعریف و به این ورودی ها در اصطلاح آرگیومنت (Argument) می گوییم، در هنگام تعریف و فراخوانی تابع بسته به هدف و نوع پردازش های مد نظر آرگیومنت ها می توانند به یکی از صورت های زیر باشند:
- فراخوانی با مقدار (Call by Value)
این حالت شیوه پیش فرض استفاده از آرگیومنت برای توابع در PHP است، در این شیوه پارامتر یا پارامترهای مد نظر به صورت متغیر بین کاراکترهای () تعریف و در هنگام فراخوانی به صورت مستقیم یا به شکل متغیر مقداردهی می شوند، مثال:
<?php
function checkValueExist($value, $array){
    if(in_array($value, $array)){
        return true;
    }
    
    return false;
}

$array = Array('A', 'E', 'G');
$value = 'R';

if(checkValueExist($value, $array)){
    echo 'مقدار ' . $value . ' در آرایه وجود دارد';
} else{
    echo 'مقدار ' . $value . ' در آرایه وجود ندارد';
}
?>
در این نمونه کد تابع فرضی checkValueExist با دو آرگیومنت تعریف شده است که پارامتر اول (value) می تواند یک رشته متنی و پارامتر دوم (array) یک آرایه باشد (در خصوص آرایه ها در مباحث آینده مفصل خواهیم گفت)، تابع مقادیر ورودی را دریافت کرده و وجود پارامتر اول را در آرایه دریافتی بررسی و در نهایت با مقادیر true یا false نتیجه را برمی گرداند و بر این مبنا می توانیم در دستور شرطی if تصمیم بگیریم که کدام قسمت از کدها اجرا شوند.
- فراخوانی با ارجاع (Call by Reference)
در حالت معمول پردازش های صورت گرفته بر مقادیر ورودی در روند تابع روی متغیرهای بیرون از تابع تاثیری ندارند، به طور مثال متغیر فرضی a در نمونه کد زیر همیشه مقدار 5  را چاپ می کند:
<?php
function doIncrement($num){
    return $num++;
}
$a = 5;
doIncrement($a);
echo $a;
?>
اما با استفاده از کاراکتر & می توانیم این حالت را تغییر داده و اثر تابع را بر روی متغیر بیرون از آن داشته باشیم، مثال:
<?php
function doIncrement(&$num){
    return $num++;
}
$a = 5;
doIncrement($a);
echo $a;
?>
خروجی این نمونه کد عدد 6 خواهد بود.
به این شیوه تعریف آرگویمنت ها با استفاده از کاراکتر &، فراخوانی با ارجاع یا Call by Reference می گوییم.
- مقادیر پیش فرض آرگیومنت ها (Default argument values)
شکل دیگر استفاده از آرگیومنت ها برای توابع تعریف آنها با مقادیر پیش فرض است، به این صورت اگر تابع را بدون آرگیومنت فراخوانی کنیم مقادیر پیش فرض جایگزین آرگیومنت می شود، مثال:
<?php
function sayWelcome($user = "Admin"){
    echo "Hi " . $user . ", Welcome to Control Panel!<br>";
}
sayWelcome();
sayWelcome("Manager");
?>
در صورت اجرای نمونه کد بالا در لوکال یا سرور خروجی زیر چاپ خواهد شد:
Hi Admin, Welcome to Control Panel!
Hi Manager, Welcome to Control Panel!
گفتیم توابع را بدون return هم می توانیم استفاده کنیم.
- لیست آرگیومنت ها با طول متغیر (Variable-length argument list)
شیوه جالب دیگر استفاده از آرگیومنت برای توابع که در PHP نسخه 5.6 و مابعد اضافه شده استفاده از عملگر سه نقطه (Splat یا Three dots Operator) و تنظیم ورودی به صورت لیست با طول متغیر است، در این شیوه تعداد آرگیومنت ها از قبل مشخص نیست و بسته به نیاز می تواند میزانی متغیر باشد، به طور مثال (کد صرفا در PHP نسخه 5.6 و مابعد قابل اجرا است):
<?php
function addNumbers(...$number){
    $result = 0;
    
    foreach($number as $key => $value){
        $result += $value;       
    }
    
    return $result;
}

echo addNumbers(1, 5, 6);
?>
خروجی نمونه کد بالا عدد 12 خواهد بود.
همان طور که مشخص است در این شیوه آرگیومنت به همراه کاراکتر سه نقطه تعریف شده و در تابع به شکل آرایه در حلقه foreach از آن استفاده کرده ایم، این شکل از استفاده از سه نقطه جهت دستیابی به مقادیر آرگیومنت را در اصطلح برنامه نویسی شیوه دسترسی به آرگیومنت های متغیر (Accessing Variable Arguments Method) می گوییم.
از سه نقطه در هنگام فراخوانی تابع هم می توانیم برای استخراج (Unpack) آرایه (یا متغیرهای Traversable یا Literal) و اختصاص به مقادیر آرگیومنت ها استفاده کنیم، البته در این حالت باید تعداد پارامترهای تابع مشخص باشد، مثال (کد صرفا در PHP نسخه 5.6 و مابعد قابل اجرا است):
<?php
function addNumbers($a, $b, $c){
    $result = $a + $b + $c;
    
    return $result;
}
$var = [1, 5, 6];
echo addNumbers(...$var);
?>
خروجی این نمونه کد هم مقادیر 12 خواهد بود.
به این شکل استفاده از سه نقطه جهت اختصاص مقادیر آرگیومنت ها را در اصطلاح برنامه نویسی شیوه مقداردهی به آرگیومنت های متغیر (Providing Variable Arguments Method) می گوییم.
نکته: مفاهیم Traversable یا Literal اصطلاحات تخصصی برنامه نویسی هستند که آموزش آنها در مرحله مقدماتی مورد نیاز نیست و در عمل هم شاید صرف این مفاهیم به خودی خود خیلی کاربردی نباشند، در همین حد بدانیم که یکی از کاربردهای کاراکتر سه نقطه می تواند با این نوع متغیرها باشد کافی است.
آخرین شکل استفاده از لیست آرگیومنت ها با طول متغیر شیوه استفاده با اشاره به نوع ورودی (Type hinted Variable Arguments Method) است، در این شیوه نام یک کلاس با فاصله قبل از کاراکتر ... قرار می گیرد و در این صورت ورودی ها الزاما باید نمونه (Instance) ای از آن کلاس باشند و در نهایت می توانیم به آبجکت های public آن کلاس در تابع دسترسی داشته باشیم، مثال:
<?php
class MyClass{
    private $var_1 = 5;
    private $var_2 = 8;
    public $myInt;
    
    function __construct($type){
        switch($type){
            case 'a':
                $this->myInt = $this->var_1;
            break;
            case 'b':
                $this->myInt = $this->var_2;
            break;
        }
    }
}

function addNumbers(MyClass ...$number){
    $result = 0;
    
    foreach($number as $key => $value){
        $result += $value->myInt;
    }
    
    return $result;
}

$a = new MyClass('a');
$b = new MyClass('b');

echo addNumbers($a, $b);
?>
خروجی مثال بالا عدد 13 خواهد بود، همان طور که مشخص است آرگیومنت های تابع از فراخوانی کلاس MyClass با دو پارامتر a و b مقداردهی و در تابع از آبجکت myInt مقادیر دریافت شده اند.
نکته: این شکل استفاده از آرگیومنت های توابع برای برنامه نویسی معمول کاربرد آنچنانی ندارد اما در برنامه نویسی پیشرفته و شی گراء ممکن است کاربردی باشد که جهت آشنایی بیشتر توضیح داده شد.

توابع درونی (Predefined یا Internal (built-in)) در PHP


در اغلب زبان های برنامه نویسی متدها و توابعی به صورت از قبل تعریف شده و آماده وجود دارد که به کمک آنها می توانیم روندهای معمول آن زبان را با سرعت و سهولت بیشتری انجام دهیم، PHP نیز از این قاعده مستثنی نیست و در هسته مفسر آن توابع درونی (Predefined یا Internal (built-in)) به تعداد خیلی زیادی جهت سرعت بخشیدن به روند کار کدنویسی از قبل تعریف شده و توسط برنامه نویسان قابل استفاده است، در لیست زیر سایت مرجع php.net این توابع و متدها را به ترتیب حروف الفبا به همراه توضیحاتی درج کرده است که مرور آنها جهت آشنایی کلی و مراجعات بعدی خالی از لطف نیست:
https://www.php.net/manual/en/indexes.functions.php
برای آشنایی بیشتر در ادامه برخی توابع درونی پرکاربرد زبان PHP را به همراه نمونه کد بررسی می کنیم.
- تابع strlen و mb_strlen
برای به دست آوردن طول رشته (تعداد کاراکتر) از تابع strlen استفاده می کنیم، حالت multi-byte این تابع برای کار با متون یونیکد مانند زبان فارسی (UTF-8) می تواند کاربرد داشته باشد، مثال:
<?php
$str = "text";
echo strlen($str);
?>
خروجی مثال بالا عدد 4 خواهد بود.
<?php
mb_internal_encoding("UTF-8");
$str = "متن";
echo mb_strlen($str);
?>
خروجی مثال بالا عدد 3 خواهد بود.
- تابع str_replace
برای جایگزینی یک مقدار رشته ای با مقادیر دیگر از تابع str_replace استفاده می کنیم، مثال:
<?php
$str = "PHP is so difficult to learn!";
echo str_replace('difficult', 'easy', $str);
?>
خروجی نمونه کد بالا به صورت زیر خواهد بود:
PHP is so easy to learn!
- تابع trim
برای حذف فضای خالی از ابتدا و انتهای رشته از تابع trim استفاده می کنیم، مثال:
<?php
$str = " PHP ";
echo strlen($str);
$str = trim($str);
echo '<br>';
echo strlen($str);
?>
خروجی مثال بالا به صورت زیر خواهد بود:
5
3
- تابع ceil
برای گرد کردن به بالای اعداد اعشاری به نزدیکترین عدد صحیح از تابع ceil استفاده می کنیم، مثال:
<?php
$num = 3.2;
echo ceil($num);
?>
خروجی مثال بالا عدد 4 خواهد بود.
floor و round دو تابع دیگر مشابه با عملکرد متفاوت در این زمینه هستند.
- تابع count
برای شمارش عناصر آرایه یا آبجکت می توانیم از تابع count استفاده کنیم، مثال:
<?php
$array = Array("a", "b");
$count = count($array);
if($count < 2){
    echo "Error!";
} else {
    echo "Ok! count array is: " . $count;
}
?>
خروجی نمونه کد بالا به صورت زیر خواهد بود:
Ok! count array is: 2
تعداد توابع درونی PHP بسیار زیاد است و در اینجا صرفا جهت نمونه و آشنایی بیشتر چند مثال ذکر شد، اما آیا باید همه این توابع را به حافظه بسپاریم؟!
جواب قطعا خیر خواهد بود، هیچ نیازی نیست لیست توابع را حفظ کنیم و چنین کاری عملا هم حداقل به راحتی ممکن نیست، کافی است در هر برنامه ای که می خواهیم بنویسیم توابع مرتبط با فرآیندهای آن برنامه را از طریق جستجو یا مراجعه به نمونه کدها و منابع مرجع پیدا، با کارکردشان آشنا شده و در نهایت در کدهایمان از آنها استفاده کنیم، البته برخی توابع PHP پرکاربرد و متداول هستند که به مرور و به صورت خودکار در ذهنمان حفظ می شوند.
دسته بندی: آموزش مقدماتی » PHP
related مطالب بیشتر:
آرایه (Array) در برنامه نویسی PHP
توابع کار با آرایه در PHP - بخش دوم
تعریف و استفاده از متغیر (Variable) در PHP
توابع کار با آرایه در PHP - بخش سوم
حلقه for، foreach و while در PHP
دیدگاه
more ۷۴ دیدگاه برای این مطلب ارسال شده است.
more چینش دیدگاه ها به ترتیب از جدیدترین به قدیمی ترین است.
مومني موگويي
۱۷:۴۷ ۱۳۹۲/۰۸/۱۹
سلام خسته نباشید میشه توابع تو در تو رو همراه با مثال توضیح بدین یک دنیا ممنون
تابع تو در تو به معنی استفاده از یک یا چند تابع درون تابع دیگری است که عملی مرسوم و متداول محسوب می شود، مثال:
<?php
function func_1($num){
$num += 10;
return $num;
}
function func_2($num){
$num += func_1($num);
return $num;
}
echo func_2(2);
?>
مومني موگويي
۰۵:۵۲ ۱۳۹۲/۰۸/۱۶
سلام و خسته نباشید
ببخشید فرق فراخوانی با مقدار و فراخوانی با ارجاع در توابع چیه میشه با مثال توضیح بدین با تشکر از لطف بی حد شما
توابع هم می توانند آرگومان داشته باشند و هم بدون آرگومان باشند که این موضوع به نیاز برنامه نویس و عملیاتی که تابع باید انجام دهد بستگی دارد، فرق دیگری بین این دو حالت نیست.
ایمان
۱۷:۲۹ ۱۳۹۲/۰۸/۰۷
سلام و خسته نباشید
ببخشید اینجا به توان 2 رسیده نه توان 10
"تابع نمایش حاصل یک عدد به توان 10"
اگر به خروجی تابع دقت کنید، عدد 2 به توان 10 رسیده و نهایتا به 1024 ختم شده! در واقع در هر دور حلقه، عدد در 2 ضرب شده، در دور بعدی مقادیر num افزایش یافته و مجددا در 2 ضرب می شود و... تا به دور 10 برسد.
مصطفی
۱۴:۱۷ ۱۳۹۲/۰۸/۰۳
من یه تایمر دارم که ثانیه به ثانیه جلو میره می تونم با جاوا اسکریپت طراحیش کنم ولی می خوام مقدارش به php ارسال بشه ایا راهی هست
باید از Ajax استفاده کنید.
مصطفی
۰۱:۰۵ ۱۳۹۲/۰۸/۰۳
سلام
ایا تابعی در php وجود داره که بشه باهاش کاری که تابع setInterval در جاوا اسکریپت انجام میده پیاده کرد؟
در عمل خیر، PHP در سرور اجرا شده و به محض فراخوانی فایل، مفسر آن را پردازش و خروجی را ارسال می کند، عملا نقطه وقفه یا بازگشتی وجود ندارد، هرچند می توان از sleep در حلقه استفاده کرد، اما این روش توصیه نمی شود و چندان متداول نیست، اگر نیاز است که یک فایل PHP در فواصل زمانی خاصی فراخوانی شود، باید از Ajax یا امکاناتی نظیر Cron Jobs در cPanel استفاده کرد.
KARIM
۲۳:۰۴ ۱۳۹۲/۰۶/۰۸
ببخشید در PHP تابعی وجود دارد که عکس یک عدد یا رشته را برگرداند مثلا: 1234 را به 4321 مقلوب کند یا تابعی هست که حروف بزرگ را به کوچک تبدیل کند؟
برای مورد اول تابع از پیش تعریف شده ای وجود ندارد، اما می توانید از نمونه زیر استفاده کنید:
<?php
function reverseNum($num){
$num_array = str_split($num);
$reverse_array = array_reverse($num_array);
$output = implode('', $reverse_array);
return $output;
}
echo reverseNum(1234);
?>
برای تبدیل حروف بزرگ به کوچک در PHP از تابع زیر استفاده کنید:
strtolower();
۲۰:۴۳ ۱۳۹۲/۰۵/۱۵
سلام و عرض ادب خسته نباشید
<?php
//تعریف تابع
function calculator($numx,$numy,$numz){
//حاصل جمع
$total = $numx + $numy + $numz;
//حاصل ضرب
$multiple = $numx * $numy * $numz;
//برگرداندن نتیجه تابع
return ("حاصل جمع اعداد برابر $total و حاصل ضرب آنها برابر $multiple است");
}
//فراخوانی تابع به همراه آرگومان ها
echo calculator(20,31,68);
?>
اینجا بجای عبارت return از echo هم میشه استفاده کرد چرا؟!
استفاده از echo در توابع چندان معمول نیست، در اینجا صرفا جهت آموزش آورده شده، در واقع echo یک دستور برای گرفتن خروجی است که می تواند هر چیزی و هر جایی (در چارچوب Syntax PHP) باشد، وقتی در تابع از echo استفاده می کنیم، خروجی در محل قرار گیری تابع چاپ می شود، اما return روش استاندارد است و نتیجه تابع را به خارج از آن (محل فراخوانی تابع) منتقل می کند (که در آنجا می توان از echo یا سایر دستورات مورد نیاز استفاده کرد).
mohammad
۱۶:۵۳ ۱۳۹۲/۰۴/۱۳
سلام اگر میشه آموزش oop هم در سایت خوبتون قرار
دهید ممنون
به جهت پیشرفته بودن مبحث، در ادامه آموزش های مقدماتی مطرح خواهد شد.
mohmaad
۲۱:۴۳ ۱۳۹۲/۰۲/۲۰
من یک تابع به اسم connect در یک صفحه به اسم list.php تعریف کردم حالا اگه بخوام در یک صفحه دیگه به اسم boop.php آنرا فراخوانی کنم پیغام میده که میخواهید از تابع تعریف نشده استفاده کنید مشکل از کجاست
برای اینکه فایل اصلی (boop.php) به اطلاعات فایلی که تابع در آن تعریف شده (list.php) دسترسی داشته باشد، باید ابتدا از include استفاده کرده و فایل تابع را داخل فایل اصلی وارد کنید، سپس می توانید از توابع موجود در آن استفاده نمائید، به طور مثال در ابتدای فایل boop.php دستورات زیر را بنویسید:
include_once('function/list.php');
در این دستور فرض ما بر این است که فایل تابع در داخل فولدر function و این فولدر در کنار فایل اصلی است.
۲۱:۵۲ ۱۳۹۱/۱۲/۱۲
ببخشید این هم یه نمونه کد php برای نظر قبلی من هستش:
<?php
$mehran = 'aps.net movjud mibashad va php movjud nist';
$pos = strpos ($mehran,'php');
if ($pos===false)
echo "kalameye /n pyda nashod";
else
echo "kalameye pedya shod $pos/n";
?>
این رو نشون میده :
kalameye pedya shod 27/r
آیا "n/" کاربردی نداره ؟ یا من درست ننوشتم ؟
باید از بک اسلش استفاده کنید، شما به اشتباه از اسلش استفاده کرده اید! به طور مثال:
<?php
echo "PHP:\n Easy And Powerful!";
?>
۲۱:۴۷ ۱۳۹۱/۱۲/۱۲
باز سلام و خسته نباشید
جناب یه سوال داشتم. (مربوط به این بخش نیست) اینکه :
میخواستم بدونم که چرا "echo" نمیتونه پارامتر هایی مثل ("r/"و "n/"و "a/") رو که استاندارد php هم هستن بشناسه ؟؟ مثلا "n/" برای مراجعه به خط بعدی هستش و مثل enter عمل میکنه . میشه در این موضوع یه راهنمایی بکنید ؟؟؟ ممنون میشم
۲۲:۲۷ ۱۳۹۱/۱۲/۰۸
خیلی ممنون از آموزشهاتون لذت میبرم من . اگه میشه آموزش های دیگه ای هم بزارید . منتظرم
۰۱:۴۶ ۱۳۹۱/۱۲/۰۶
راستش من این return و اینا رو خوب نفهمیدم . و اینم لینک دانلود آموزش . ببخشید :
http://www.photolady.ir/content/uploads/2013/02/16.zip
به طور ساده وقتی یک تابع را فراخوانی می کنیم و مقادیری به عنوان آرگومان (در اینجا 10 و 20) به آن نسبت می دهیم، پس از طی فرآیندهایی درون تابع، مقادیری به عنوان نتیجه از طرف آن بازگشت (return) داده می شود، اما تابع مورد نظر شما اشکال دارد یا دستکاری شده است و به همین خاطر کد اجرا نخواهد شد تا چیزی خروجی دهد.
۱۲:۴۶ ۱۳۹۱/۱۲/۰۵
سلام خیلی ممنون از مطلبتون . من این PHP رو از یه آموزش دیگه برداشتم و اینجا میزارم چون اونجا نتونستم به خاطر مشکلاتی ازش حالی بشم . ممنون میشم اگه بصورت کلی واسمون توضیح بدید
لینک کد بر روی وبسایت خودم :
http://www.photolady.ir/content/uploads/2013/02/function.txt
این هم لینک آموزش مربوط به این فانکشن که بعضی جاهاش قطع و وصل میشه و من نتونستم بفهمم منظورش چیه :
http://www.photolady.ir/content/uploads/2013/02/16.swf
ممنون از سایت خوبتون
این تابع که در لینک بالا بود:
function MyPower($InputNum,$PowerNum)
{
$RESULT=1;
for($i=1;1<=PowerNum;$i+-)
{
$Result*-$i;
}
return $Result;
}
print MyPower(10,20);
از نظر ساختاری و Syntax مشکل دارد و عمل نخواهد کرد.
فایل فلش هم ظاهرا خالی است و چیزی نمایش نمی دهد!
more لطفا پیش از ارسال دیدگاه نکات زیر را مد نظر داشته باشید:
- به سوالات کلی، زمانبر، مبهم و مشکلاتی که تلاشی برای رفع آنها نکرده باشید پاسخ مختصر داده شده یا به بخش برنامه نویسی اختصاصی ارجاع داده می شوند.
- کدها و اسکریپت های طولانی را ترجیحا در یک صفحه وب آنلاین یا به صورت حساب موقت و آزمایشی قرار دهید تا امکان بررسی دقیق مشکل و خطایابی میسر باشد.
- تمام دیدگاه های ارسالی خوانده شده و برای هر کاربر مدت زمان لازم جهت پاسخگویی در نظر گرفته می شود، لطفا از طرح سوالات متعدد در بازه زمانی کوتاه خودداری کنید.



 refresh
10 × 10
5 × 8
20 × 20
=