Unterschied global setzen, Parameter übergeben
Dieter
- php
Hallo
ich habe eine Frage zu PHP bzw. Programmiertechnik im Allgemeinen.
Und zwar mal folgendes angenommen:
<?php
$monster_array_mit_viel_inhalt=array('a','b'...'z');
function tu_dies_und_das()
{
global $monster_array_mit_viel_inhalt;
... hier wird es getan ....
}
tu_dies_und_das();
function tu_dieses_und_jenes($array)
{
... hier wird es getan ....
return $array;
}
$monster_array_mit_viel_inhalt=tu_dieses_und_jenes($monster_array_mit_viel_inhalt);
?>
###############
abgesehen davon das Version 1. übersichtlicher und Version 2. universeller ist, würde es mich interessieren ob es da z.B. Performance-Unterschiede gibt.
Ich habe zwar so ziemlich wenig Ahnung wie das PHP-intern behandelt wird, aber ich vermute das in beiden Fällen nur ein Zeiger auf eine Speicheradresse gesetzt, bzw. übergeben wird.
Demnach wäre es also wurscht.
Liege ich da ungefähr richtig?
Viele Grüße
Euer Dieter
Hoi,
1 . Variante
function tu_dies_und_das()
{
global $monster_array_mit_viel_inhalt;
... hier wird es getan ....
}
Pfui!
oder 2. Variante
function tu_dieses_und_jenes($array)
{
... hier wird es getan ....
return $array;
}
besser
abgesehen davon das Version 1. übersichtlicher
Das ist nun Ansichtssache.
und Version 2. universeller ist, würde es mich interessieren ob
es da z.B. Performance-Unterschiede gibt.
Natuerlich gibt es da Unterschiede. Bei V. 2 muss er eine Kopie des
Arrays anlegen und die dann zurueck geben.
Liege ich da ungefähr richtig?
Nein :-)
Ansonsten vielleicht eher ein 'return &$array'.
Gruessse,
CK
Hallo CK
also wenn ich das Array per Referenz übergebe wäre es besser, aber immer noch nicht so gut wie es per global direkt zu bearbeiten?
function tu_dieses_und_jenes(&$array)
{
... hier wird es getan ....
$array=$ergebnis;
}
Viele Grüße
Dieter
Hoi,
also wenn ich das Array per Referenz übergebe wäre es besser, aber
immer noch nicht so gut wie es per global direkt zu bearbeiten?
Bei Referenzen ist da kein spuerbarer Unterschied (liegt an der Art,
wie Referenzen funktionieren).
oder 2.b) Variante
function tu_dieses_und_jenes(&$array)
{
... hier wird es getan ....
$array=$ergebnis;
}
Ja, z. B.
Gruesse,
CK
Hoi,
function tu_dieses_und_jenes(&$array)
{
... hier wird es getan ....
$array=$ergebnis;
}
Habe ich ganz uebersehen, das mit der Referenz bringt nur was, wenn
du auch *nur* mit der Referenz arbeitest.
Gruesse,
CK
Hallo CK
Habe ich ganz uebersehen, das mit der Referenz bringt nur was, wenn
du auch *nur* mit der Referenz arbeitest.
Oh ja, also
Version 2.b)
function tu_dieses_und_jenes(&$array)
{
... hier wird es getan ....
z.B. $array[$counter]=$ergebnis; # etc.
}
Vielen Dank für Deine Hilfe
Dieter
btw.
ich wollte mal auf www.wwwtech.de gucken, ist aber "verboten".
Das ist wohl nur für die eMail?
Hoi,
ich wollte mal auf www.wwwtech.de gucken, ist aber "verboten".
Das ist wohl nur für die eMail?
Im Moment ja. Mir fehlt im Moment einfach die Zeit, mich darum zu
kuemmern.
Gruesse,
CK
Hi,
Bei Referenzen ist da kein spuerbarer Unterschied (liegt an der Art,
wie Referenzen funktionieren).
eigentlich sind Referenzen sogar idr. langsamer als wenn man per Wert uebergibt (ausser es handelt sich um einige MB an Daten, aber sowas macht ausser Ulf wohl niemand).
Referenzen sind nur fuer den gebrauch mit Objekten sinnvoll, daher wird sich das mit der ZendEngine2 (PHP5) auch aendern, dass mit new CLASS eine Kopie erzeugt wird.
Jan
--