recherche

Maison  >  Questions et réponses  >  le corps du texte

Quelle est la signification des paramètres de longueur variable en PHP ? Peut-il être implémenté à l’aide d’un tableau ?

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

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

Vous pouvez mettre les paramètres dans le tableau lors de l'appel de test
Quelle est la nécessité de cette nouvelle fonctionnalité ?

曾经蜡笔没有小新曾经蜡笔没有小新2796 Il y a quelques jours1084

répondre à tous(5)je répondrai

  • 習慣沉默

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

    Cela signifie que vous n'avez pas besoin de déclarer un tableau séparément

    répondre
    0
  • 我想大声告诉你

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

    Vous pouvez le comprendre comme du sucre syntaxique
    func_get_argsIl peut être implémenté, mais parfois ce n'est pas si élégant

    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); 
    }
    }
    

    répondre
    0
  • 欧阳克

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

    Par exemple, lorsque vous souhaitez appeler une interface, les adresses de service de nombreuses interfaces sont les mêmes, mais elles sont exécutées par leurs classes et méthodes respectives. Si vous souhaitez encapsuler, vous ne pouvez pas déterminer le type et le numéro du paramètre. , $className est votre classe spécifique, $actionName est la méthode exécutée dans la classe

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

    De cette façon, il vous est difficile de gérer divers paramètres en un seul endroit. Ce qui est pratique est que lors de l'écriture de l'interface d'appel spécifique, les paramètres sont transmis selon les règles, mais l'appel et le retour réels sont uniformément transmis par $. paramètres. Bien que PHP soit du même type, l'interface que vous appelez peut être écrite dans d'autres langages statiques et le type doit être cohérent.

    Bien sûr, si vous ne l'utilisez qu'une seule fois, vous pouvez simplement transmettre la variable directement, pas besoin de vous embêter.

    répondre
    0
  • 我想大声告诉你

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

    redis.lpush scène

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

    répondre
    0
  • 迷茫

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

    C'est juste du sucre syntaxique, avec des paramètres variables. De nombreux langages l'ont implémenté, et PHP l'a également implémenté

    répondre
    0
  • Annulerrépondre