2016-04-26 1 views
3

Ist es möglich, die einzelnen Elemente eines Arrays auf einfache Weise als Parameter an eine Methode zu übergeben?PHP - Einzelne Array-Elemente als Parameter für Methode

Wie so:

Edit2:

ich meinen Code geändert, um anzuzeigen 'eine Lösung', um das Problem mit dieser Lösung ist, dass es seit PHP 4.1 und entfernt in PHP ist veraltet 7.

<?php 
    $builder = new Builder; 
    $params = array('This is number: ', 4); 

    echo call_user_method_array('add', $builder, $params); 

    class Builder { 
     public function add($string1, $number1) { 
      return $string1 . $number1; 
     } 
    } 
?> 

Bearbeiten:

Ich habe einen Fehler gemacht, indem Sie ein einfaches Beispiel verwenden. Der Grund, warum ich mich frage, ob das möglich ist, ist nicht für eine Funktion, die eine solche Zeichenfolge zurückgibt. Es ist ein MVC-ähnliches Framework zu erstellen. Die Lösung muss rund sein.

+0

Pass-Array und 'implod' es oder Array-Element in irgendeiner Variable speichern und das übergeben Sie es an Funktion –

+2

Versuchen Sie wie folgt: 'öffentliche Funktion hinzufügen ($ params) { Rückkehr implode ('', $ params); } ' – Thamilan

Antwort

2

Wenn Sie mit Ihrem General bleiben wollen Lösung, verwenden nur die richtige nicht veraltet Methode:

echo call_user_func_array([$builder, 'add'], $params); 

Referenz: callable

Demo: https://3v4l.org/4VFi6

2

Verwenden Sie implode() Methode.

<?php 
    $builder = new Builder; 
    $params = array('This is number: ', 4); 

    echo $builder->add($params); //returns 'This is number: 4' 

    class Builder { 
     public function add($params) { 
      return implode('', $params); 
     } 
    } 
?> 

Ausgabe

This is number: 4 

prüfen Online-Demo: Click Here

ODER

Pass 2 Parameter $params[0],$params[1].

<?php 
    $builder = new Builder; 
    $params = array('This is number: ', 4); 

    echo $builder->add($params[0],$params[1]); //returns 'This is number: 4' 

    class Builder { 
     public function add($string1 ,$number1) { 

      return $string1 . $number1; 
     } 
    } 
?> 

Online Demo: Click Here

+0

sollte es sein' Return implode ('', $ params); 'da OP fügt Platz im Array-Wert selbst – Thamilan

+0

korrigieren, bearbeitet. Vielen Dank. :) @Thamizhan – RJParikh

+1

Ich habe meinen Beitrag bearbeitet, mein Beispielcode ist nicht der einzige Anwendungsfall, den ich für dieses Problem habe. Und als solche muss die Lösung rundum sein. – kgongonowdoe

0

Hier ist ein generischer Ansatz:

einfach das Array an die Funktion übergeben und Iterierte durch sie durch einen foreach-loop

<?php 
    $builder = new Builder; 
    $params = array('This is number: ', 4); 

    $builder->add($params); //returns 'This is number: 4' 

    class Builder { 
     public function add($array) { 
      foreach($array as $key => $value){ 
       //Do something with your values here if you want 
       return $key . $value; 
      } 
     } 
    } 
?> 
mit