[Variablen] pass-by-reference

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

  • [Variablen] pass-by-reference

    hallo,
    wer kann mir helfen?
    php5 liefert warnings für jeden Funktionsaufruf mit pass-by-reference:
    Warning: Call-time pass-by-reference has been deprecated - argument passed by value; If you would like to pass it by reference, modify the declaration of [runtime function name](). If you would like to enable call-time pass-by-reference, you can set allow_call_time_pass_reference to true in your INI file. However, future versions may not support this any longer. in ...

    z.B.
    Aufruf:
    db_select_texte (&$result_texte, &$num_rows_texte, &$rc_texte);
    Function:
    function db_select_texte ($res, $num, $rc) {

    $result = mysql_query('SELECT * FROM sisters.texte
    ORDER BY text_txt_s');
    if (!$result) {
    echo "fehler select texte!";
    echo mysql_error ();
    $num = 0;
    $rc = 12;
    }
    else {
    $rc = 0;
    $num = mysql_num_rows($result);
    for ($i = 0; $i < $num; $i++) {
    $res[$i] = mysql_fetch_array($result);
    }
    }
    }

    Wie kann ich die Funktionen umbauen, dass ich in der Funktion trotzdem Werte verändern und zurückgeben kann? Geht das mit OOP? Wie?

    Danke!
    J.

  • #2
    du musst einfach nur statt
    Code:
    function db_select_texte ($res, $num, $rc)
    Code:
    function db_select_texte (&$res, &$num,&$rc)
    schreiben.

    dann gibt es automatisch pass-by-ref.
    blllubb

    Kommentar


    • #3
      Danke,
      aber reicht das?
      Wird die Variable in der Funktion dann trotzdem verändert?

      Kommentar


      • #4
        jap
        blllubb

        Kommentar


        • #5
          habs schon probiert und funktioniert!
          super!
          Danke Dir!

          Kommentar


          • #6
            [PHP5] bitte nochmals um tips

            hab zu früh gejubelt - so einfach ist das Weglassen des "&" nicht, weil dann - wie vermutet - die Variable in der Funktion nicht verändert wird. Gibt es eine Alternative?

            Danke!
            J.

            Kommentar


            • #7
              Hi,

              call-time-pass-by-reference bezieht sich wie der name schon
              sagt auf den aufruf.

              Vermutung: Du rufts die oben defnierte funktion etwa so auf.

              PHP-Code:
              $result db_select_texte (&$res,&$num,&$rc); 
              richtig wäre aber hier:
              PHP-Code:
              $result db_select_texte ($res,$num,$rc); 
              WICHTIG: es handelt sich hier nicht um die definition sondern
              um den aufruf.

              greets
              (((call/cc call/cc) (lambda (x) x)) "Scheme just rocks! and Ruby is magic!")

              Kommentar


              • #8
                sorry frodenius,
                alles zurück! Kann nicht lesen - funktioniert mit dem "&" in der Funktionsdeklaration!

                DANKE!
                J.

                Kommentar

                Lädt...
                X