suchen

Heim  >  Fragen und Antworten  >  Hauptteil

Was bedeuten Parameter variabler Länge in PHP? Können sie mithilfe eines Arrays implementiert werden?

<?php
function test(...$args)
{
    print_r($args);
}

test(1,2,3);
//输出
Array
(
    [0] => 1
    [1] => 2
    [2] => 3
)
?>

Sie können die Parameter beim Aufruf von test in das Array einfügen.
Was ist die Notwendigkeit dieser neuen Funktion?

曾经蜡笔没有小新曾经蜡笔没有小新2796 Tage vor1083

Antworte allen(5)Ich werde antworten

  • 習慣沉默

    習慣沉默2017-06-14 10:51:43

    意义是你不用单独声明一个数组了

    Antwort
    0
  • 我想大声告诉你

    我想大声告诉你2017-06-14 10:51:43

    你可以理解为语法糖
    func_get_args可以实现,不过有些时候没这么优雅

    function sort($mode,...$args) {
      if($mode === SORT_DESC) {
          print_r($args);
      }
    }
    
    function sort() {
     $args = func_get_args();
     if($args[0] === SORT_DESC){
      array_shift($args);// 去除mode
       print_r($args); 
    }
    }
    

    Antwort
    0
  • 欧阳克

    欧阳克2017-06-14 10:51:43

    比如你要调用接口的时候,很多接口的服务地址是一样的,但是被各自的类和方法执行,你要封装的话,就无法确定参数类型和个数,像$className是你具体的一个一个的类,$actionName是类中执行的方法

    call_user_func_array([$className, $actionName], $params)

    这样,你是很难在一处处理各种参数的,方便的就是在具体调用接口编写时,参数按规则传递,但是真正的调用和返回是统一由$params来传输的。虽然php是若类型,但可能你调用的接口是其它静态语言编写的,类型也要保持一致。

    当然如果你只是用一次的话,就直接传递变量就可以了,不用这么麻烦。

    Antwort
    0
  • 我想大声告诉你

    我想大声告诉你2017-06-14 10:51:43

    redis.lpush 场景

    public function lPush( $key, $value1, $value2 = null, $valueN = null ) {}

    Antwort
    0
  • 迷茫

    迷茫2017-06-14 10:51:43

    就是一个语法糖,不定参数。很多语言都有实现,php也实现了

    Antwort
    0
  • StornierenAntwort