array byref an create_function übergeben

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • array byref an create_function übergeben

    ich habe folgende Funktion, wobei $data ein Array ist:

    PHP-Code:
    function pharse_content (&$tpl, &$data$final=1$tag='#') {

            
    preg_replace_callback ("/(\{".$tag.")([a-zA-Z0-9_]{1,})(".$tag."\})/e",
                
    create_function('$wildcard,$final='.$final,'/* some content handeling */;'),
                
    $tpl);
     } 
    An die hier erstellte Funktion (create_function) soll nun das Array $data mit übergeben werden (byref). Leider funktioniert das nicht, es kommt die Fehlermeldung zurück, dass sich in der Funktion eine ungültige Klammer befindet (durch das Wort "array()" vermutlich).
    Gibt es eine "saubere" Möglichkeit das Array zu übergeben, oder muss ich es über eine externe Varibale übergeben auf die ich dann via global den Zugriff ermögliche? Das Array soll auf alle Fälle by Reference übergeben werden da es sehr groß ist und die Fkt. oft aufgerufen wird, wobei viel Zeit für Kopieroperationen verschwendet würde.

    Danke schon mal an alle...

  • #2
    PHP-Code:
    function dummy(&$data$match) {
        
    $data['bar'] = 'ja';
        if (isset(
    $data[$match]))
            return 
    $match.' existiert in $data<br />';
        return 
    $match.' existiert nicht in $data<br />';
    }

    function 
    do_something(&$data) {
        return 
    preg_replace('%([a-z]+)%e'
            
    "dummy(\\$data, '$1')"
            
    'abc foo def bar');
    }


    $data = array('foo' => 'ja');

    echo 
    '<pre>'.print_r($datatrue).'</pre>';

    echo 
    do_something($data);

    echo 
    '<pre>'.print_r($datatrue).'</pre>'
    So?
    Ich denke, also bin ich. - Einige sind trotzdem...

    Kommentar


    • #3
      @op: bitte: im code entweder korrektes englisch verwenden oder bei der muttersprache bleiben.

      ein beispiel für create_function mit referenzen:
      PHP-Code:
      <?php

      $bla 
      create_function('$foo, &$bar''return print_r($bar,true);');

      $ding null;
      $dong = array(
          
      'foo',
          
      'bar',
      );

      echo 
      call_user_func($bla$ding$dong);

      $dong['baz'] = 'hello';

      echo 
      call_user_func($bla$ding$dong);


      // btw: das funktioniert nicht: function foo(&$bla = array()); 
      // referenzen mit default-wert gibt's erst seit neuestem, ist derzeit
      // aber noch experimentell.
      Zuletzt geändert von axo; 11.06.2006, 10:09.

      Kommentar

      Lädt...
      X