PHP function missing argument error

前端 未结 5 448
孤街浪徒
孤街浪徒 2020-12-19 06:02

My validate function looks like that

function validate($data, $data2 = 0, $type)
{
...

Function call example

if ($result =          


        
相关标签:
5条回答
  • 2020-12-19 06:10
    function validate($data, $data2, $data3, $data4, $data5)
    

    im a beginner but i think that you can use a thousand arguments as long as you call like that

    if ($result = validate($lname, 'name','','','') !== true)
    
    0 讨论(0)
  • 2020-12-19 06:11

    Notice that starting with PHP 7.1 this will throw a PHP Fatal error, not just a warning:

    PHP Fatal error:  Uncaught ArgumentCountError: Too few arguments to function validate(), 2 passed in /path/to/file.php on line X and exactly 3 expected
    

    More info: http://php.net/manual/en/migration71.incompatible.php

    0 讨论(0)
  • 2020-12-19 06:22

    Missing argument 3 ($type) for validate()

    Always list optional arguments as the last arguments. Since PHP doesn't have named parameters nor "overloading ala Java", that's the only way:

    function validate($data, $type, $data2 = 0) {
    }
    
    0 讨论(0)
  • 2020-12-19 06:23

    You should at least set the $type in this line:

    function validate($data, $data2 = 0, $type)
    

    at NULL or '' as you can see here:

    function validate($data, $data2 = 0, $type = null)
    

    PHP let you to set a value for the parameters, but you can't define a parameter WITHOUT a preset value AFTER parameter(s) which HAVE a preset value. So if you need to always specify the third param, you have to switch the second and the third like this:

    function validate($data, $type, $data2 = 0)
    
    0 讨论(0)
  • 2020-12-19 06:29

    From http://php.net/manual/en/functions.arguments.php

    Note that when using default arguments, any defaults should be on the right side of any non-default arguments; otherwise, things will not work as expected

    Your should switch the second and third arguments of the function, making the optional argument the last one. So it becomes:

    function validate($data, $type, $data2 = 0)
    { ....
    
    0 讨论(0)
提交回复
热议问题