ตั้งค่าการอ่าน

ค่าเริ่มต้น

  • เลื่อนอัตโนมัติ
    Hello World4

    ลำดับตอนที่ #3 : ตอนที่ยังไม่ได้ตั้งชื่อ

    • อัปเดตล่าสุด 26 ก.ค. 59


    func_num_args

    (PHP 4, PHP 5, PHP 7)

    func_num_args — Returns the number of arguments passed to the function

    Description ¶

    int func_num_args ( void )

    Gets the number of arguments passed to the function.

    This function may be used in conjunction with func_get_arg() and func_get_args() to allow user-defined functions to accept variable-length argument lists.

    Return Values ¶

    Returns the number of arguments passed into the current user-defined function.

    Changelog ¶

    VersionDescription
    5.3.0This function can now be used in parameter lists.
    5.3.0If this function is called from the outermost scope of a file which has been included by callinginclude or require from within a function in the calling file, it now generates a warning and returns -1.

    Errors/Exceptions ¶

    Generates a warning if called from outside of a user-defined function.

    Examples ¶

    Example #1 func_num_args() example

    function foo()
    {
        
    $numargs func_num_args();
        echo 
    "Number of arguments: $numargsn";
    }

    foo(123);   
    ?>

    The above example will output:

    Number of arguments: 3

    Example #2 func_num_args() example before and after PHP 5.3

    test.php
    function foo() {
        include 
    './fna.php';
    }

    foo('First arg''Second arg');
    ?>

    fna.php

    $num_args 
    func_num_args();
    var_export($num_args);

    ?>

    Output previous to PHP 5.3:

    2

    Output in PHP 5.3 and later will be something similar to:

    Warning: func_num_args(): Called from the global scope - no function context in /home/torben/Desktop/code/ml/fna.php on line 3 -1

    Notes ¶

    Note:

    Because this function depends on the current scope to determine parameter details, it cannot be used as a function parameter in versions prior to 5.3.0. If this value must be passed, the results should be assigned to a variable, and that variable should be passed.

    add a note add a note

    User Contributed Notes 6 notes

    jared at ws-db dot com ¶
    10 years ago
    Just a note for anyone wondering. This function doesn't include params that have a default value, unless you pass one in to overwrite the default param value. Not sure if that makes sense, so here's an example: 

    function helloWorld($ArgA$ArgB="HelloWorld!") { 
      return 
    func_num_args(); 


    // The following will return 1 
    $Returns1 helloWorld("HelloWorld!"); 

    // The following will return 2 
    $Returns2 helloWorld("HelloWorld!""HowdyWorld!"); 
    ?>
    Dennis Robinson from basnetworks dot net ¶
    7 years ago
    This function comes in handy, and I believe is the only solution, when you have an optional parameter that can take any type of data.

    For example:


    // $data can be of any type, including null
    function my_function($name$data null)
    {
        if (
    $data !== null)
        {
            
    // Do something with $data
            // If you call my_function('something'), this WILL NOT be reached
            // If you call my_function('something', null), this WILL NOT be reached
        
    }
    }

    ?>

    The problem with the above function is that you will never be able to use null as the value for $data.  To fix this, use func_num_args() like so:


    // $data can be of any type, including null
    function my_function($name$data null)
    {
        if (
    func_num_args() >= 2)
        {
            
    // Do something with $data
            // If you call my_function('something'), this WILL NOT be reached
            // If you call my_function('something', null), this WILL be reached
        
    }
    }

    ?>

    This solution works because func_num_args() reports exactly how many arguments were passed when the function was called.  It does not take into account when default argument values are used.
    ashley at dcs dot warwick dot ac dot uk ¶
    14 years ago
    If you want to pass the parameters on intact to another function, use func_get_args and call_user_func_array (careful - this one is only available in recent PHP versions).  For example: 

    /* Print an HTML tag.  This accepts a variable number of arguments: 
       the first should be the name of the tag, followed by pairs of 
       arguments that describe keys and values.  The values are printed 
       with surrounding double quote characters.  */ 
    function printTag() { 
      
    $numArgs func_num_args(); 
      if (
    $numArgs 1) die("printTag given no arguments"); 
      
      echo 
    "<" func_get_arg(0); 
      for (
    $i 1$i $numArgs$i+=2) { 
        echo 
    " " func_get_arg($i); 
        if (
    $i+$numArgs
          echo 
    "="" func_get_arg($i+1) . """
      } 
      echo 
    ">"
      


    /* Print an HTML tag with a newline on the end */ 
    function printTagNL() { 
      
    $args func_get_args(); 
      
    call_user_func_array("printTag"$args); 
      echo 
    "n"


    printTagNL("input""type""hidden""name""SORTORDER""value"$columnNo); 
    ?>
    luisguillermo dot quevedovelez at gmail dot com ¶
    4 years ago
    I had defined a function function_name(){ ...} as a drupal callback.
    I try to get how many params where passed

    I got a Error and my Site falls down

    I've replaced func_get_args() instead func_num_args() and my Site was restored.

    I conclude you can not use  func_num_args() in callbacks.

    Hope it helps.
    thalis at NOSPAMcs dot pitt dot edu ¶
    14 years ago
    The idea of func_get_args() is to construct functions of variable number of parameters like 

    function var_param_func(){ 
        if(
    func_num_args()==0){ 
            
    //do one thing 
        

        if(
    func_num_args()==1
            
    //do another thing 
            //get the args with func_get_args() 
        


    ?>
    andy at arakka dot co dot th ¶
    11 years ago
    func_num_args() can be used in conjunction with named arguments, also. For example: 

    function DebugShow$label$value ) { 
      echo 
    "# " $label 
      if ( 
    func_num_args() > ) echo " = " $value 
      echo 
    "
    "


    ?>
    ติดตามเรื่องนี้
    เก็บเข้าคอลเล็กชัน

    ผู้อ่านนิยมอ่านต่อ ดูทั้งหมด

    loading
    กำลังโหลด...

    อีบุ๊ก ดูทั้งหมด

    loading
    กำลังโหลด...

    ความคิดเห็น

    ×