PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks. |
 |

03-11-2006, 15:17
|
justi
Newbie
|
|
Registriert seit: Oct 2006
Ort: München
Beiträge: 9
|
|
[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.
|

03-11-2006, 15:42
|
frodenius
Registrierter Benutzer
|
|
Registriert seit: Sep 2006
Ort: Germany, Frankfurt/Main
Beiträge: 156
|
|
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
|

03-11-2006, 15:46
|
justi
Newbie
|
|
Registriert seit: Oct 2006
Ort: München
Beiträge: 9
|
|
Danke,
aber reicht das?
Wird die Variable in der Funktion dann trotzdem verändert?
|

03-11-2006, 16:05
|
frodenius
Registrierter Benutzer
|
|
Registriert seit: Sep 2006
Ort: Germany, Frankfurt/Main
Beiträge: 156
|
|
jap
__________________
blllubb
|

03-11-2006, 16:08
|
justi
Newbie
|
|
Registriert seit: Oct 2006
Ort: München
Beiträge: 9
|
|
habs schon probiert und funktioniert!
super!
Danke Dir!
|

03-11-2006, 17:43
|
justi
Newbie
|
|
Registriert seit: Oct 2006
Ort: München
Beiträge: 9
|
|
[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.
|

03-11-2006, 18:13
|
closure
Master
|
|
Registriert seit: Mar 2006
Beiträge: 796
|
|
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
|

03-11-2006, 18:27
|
justi
Newbie
|
|
Registriert seit: Oct 2006
Ort: München
Beiträge: 9
|
|
sorry frodenius,
alles zurück! Kann nicht lesen - funktioniert mit dem "&" in der Funktionsdeklaration!
DANKE!
J.
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
Themen-Optionen |
|
Thema bewerten |
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
|
PHP News
|