Xynon: Funktions Parameter

Hallo,

ich habe mal eine Frage:

Wie kann man bei PHP eine Funktion schreiben die beliebig viele Parameter erfasst?

Also so wie bei z.B. array_push

Danke schon mal im vorraus!
mfg Xynon

  1. Hello,

    Wie kann man bei PHP eine Funktion schreiben die beliebig viele Parameter erfasst?

    Also so wie bei z.B. array_push

    siehe http://de.php.net/manual/de/function.func-get-args.php
    und   http://de.php.net/manual/de/function.func-num-args.php

    usw.

    Liebe Grüße aus dem schönen Oberharz

    Tom vom Berg

    --
    Nur selber lernen macht schlau
    http://bergpost.annerschbarrich.de
    1. Danke,

      das ist genau das was ich brauchte, ich wusste nur nicht wonach ich suchen sollte.

      mfg Xynon

    2. Moin allerseits,

      siehe http://de.php.net/manual/de/function.func-get-args.php
      und   http://de.php.net/manual/de/function.func-num-args.php

      Das ist aber ziemlich allgemein erklärt. Gibt es irgenwo eine ausführlichere Erklärung mit mehr als nur einem Beispiel? a la self?
      Oder hat irgendjemand Lust, das hier ein wenig aus zu führen?

      Grüße, JN

      --
      ie:{ fl:( br:^ va:| ls:[ fo:| rl:? n4:? ss:| de:] js:| ch:? sh:( mo:| zu:)
      http://www.johny7.de
      1. echo $begrüßung;

        » siehe http://de.php.net/manual/de/function.func-get-args.php
        » und   http://de.php.net/manual/de/function.func-num-args.php
        Das ist aber ziemlich allgemein erklärt. Gibt es irgenwo eine ausführlichere Erklärung mit mehr als nur einem Beispiel? a la self?
        Oder hat irgendjemand Lust, das hier ein wenig aus zu führen?

        Was genau verstehst du nicht? Egal ob und wieviele Parameter für eine Funktion deklariert sind, func_num_args() liefert ihre Anzahl und func_get_args() ein Array mit den Werten sowie func_get_arg ein einzelnen Wert anhand der Position.

        echo "$verabschiedung $name";

        1. Moin allerseits,

          Was genau verstehst du nicht? Egal ob und wieviele Parameter für eine Funktion deklariert sind, func_num_args() liefert ihre Anzahl und func_get_args() ein Array mit den Werten sowie func_get_arg ein einzelnen Wert anhand der Position.

          D.h. ich kann eine Funktion deklarieren ohne Parameter an zu geben und sie dann mit beliebig vielen Parametern aufrufen? Kann ich auch eine Kombination machen, z.B.

            
          <?php  
          function mytest($arg1,$arg2,$arg3="1",$arg4="foo")  
          {  
          ...  
          }  
            
          mytest(1,2,3,4,5,6,7);  
            
          ?>  
          
          

          Grüße, JN

          --
          ie:{ fl:( br:^ va:| ls:[ fo:| rl:? n4:? ss:| de:] js:| ch:? sh:( mo:| zu:)
          http://www.johny7.de
          1. echo $begrüßung;

            » Egal ob und wieviele Parameter für eine Funktion deklariert sind, func_num_args() liefert ihre Anzahl [...]

            besser gesagt: die Anzahl der aktuell übergebenen Werte.

            D.h. ich kann eine Funktion deklarieren ohne Parameter an zu geben und sie dann mit beliebig vielen Parametern aufrufen? Kann ich auch eine Kombination machen, z.B.

            Ja. Ja. Die ersten paar Parameterwerte kannst du über die Parameter-Variablen ansprechen. Und mit den genannten Funktionen kannst du alle ansprechen, also zusätzlich auch noch die Extra-Werte.

            echo "$verabschiedung $name";

  2. Hallo,

    hätte allerdings noch eine Frage:

    Warum kann array_push nichts an ein array von einer Klasse anhängen?

      
    class beispiel  
    {  
      private $array = array();  
      public function add($item)  
      {  
        array_push($this->array,$item);  
      }  
    }  
      
    $test = new beispiel();  
    $test->add("test");  
    
    

    Ergebnis ist:
    Warning:  array_push() [function.array-push]: First argument should be an array in ...

    Danke schon mal im vorraus!
    mfg Xynon

    1. Hello,

      Warum kann array_push nichts an ein array von einer Klasse anhängen?

      class beispiel
      {
        private $array = array();
        public function add($item)
        {
          array_push($this->array,$item);
        }
      }

      $test = new beispiel();
      $test->add("test");

      
      >   
      > Ergebnis ist:  
      > Warning:  array\_push() [function.array-push]: First argument should be an array in ...  
        
        
      Es funktioniert, wenn man keine Namen benutzt, die reserviert sind.  
        
        
      <?php   ### array\_push.php ###  
        
      class beispiel  
      {  
          private $\_namen = array();  
        
          public function add($item)  
          {  
              array\_push($this->\_namen, $item);  
          }  
        
          public function show()  
          {  
              echo "<pre>\r\n";  
              echo htmlentities(print\_r($this->\_namen,1));  
              echo "</pre>\r\n";  
          }  
      }  
        
      $test = new beispiel();  
      $test->add("test");  
      $test->show();  
        
      ?>  
        
        
        
        
        
        
        
      Liebe Grüße aus dem schönen Oberharz  
        
        
      Tom vom Berg  
      ![](http://selfhtml.bitworks.de/Virencheck.gif)  
        
      
      -- 
      Nur selber lernen macht schlau  
      <http://bergpost.annerschbarrich.de>
      
      1. Achja, der Unterstrich, (kommt davon wenn schon ewig nicht mehr mit PHP gearbeitet hat)

        Danke für den Hinweis!
        mfg Xynon

        1. Hello,

          Achja, der Unterstrich, (kommt davon wenn schon ewig nicht mehr mit PHP gearbeitet hat)

          Nein, der Unterstrich ist nur meine persönliche Kennzeichnung für Arrays...

          Aber Du hast als Element-Bezeichner für das Klassenelement 'array' benutzt und das ist ein Schlüsselwort.

          $this->array

          ist daher (noch) ein Problem für PHP.

          Liebe Grüße aus dem schönen Oberharz

          Tom vom Berg

          --
          Nur selber lernen macht schlau
          http://bergpost.annerschbarrich.de
          1. Hallo,

            Nein, der Unterstrich ist nur meine persönliche Kennzeichnung für Arrays...

            Aber Du hast als Element-Bezeichner für das Klassenelement 'array' benutzt und das ist ein Schlüsselwort.

            $this->array

            Dann versteh ich nicht denn das war nur ein Bsp.
            in meiner richtigen Klasse nutze ich nämlich die Variable
            $do_nothing_list = array();
            und das ging nicht, jetzt mit $_do_nothing_list
            geht es?!

    2. Hi Xynon!

      Bei mir funktioniert dein Beispiel problemlos unter Windows mit PHP 5.2.9.

      Die Ausgabe mittels var_dump:

      object(beispiel)#1 (1) {
        ["array:private"]=>
        array(1) {
          [0]=>
          string(4) "test"
        }
      }

      Welche PHP-Version nutzt du?

      MfG H☼psel

      --
      "It's amazing I won. I was running against peace, prosperity, and incumbency."
      George W. Bush speaking to Swedish Prime Minister unaware a live television camera was still rolling, June 14, 2001
      Selfcode: ie:% fl:( br:> va:) ls:& fo:) rl:? n4:& ss:| de:] js:| ch:? sh:( mo:) zu:)
      1. Hallo,

        Welche PHP-Version nutzt du?

        Auch 5.2.9