php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


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.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 21-08-2010, 19:57
MalerJ
 Registrierter Benutzer
Links : Onlinestatus : MalerJ ist offline
Registriert seit: Aug 2010
Beiträge: 6
MalerJ befindet sich auf einem aufstrebenden Ast
Standard PHP Referenzen in foreach Schleife

Hallo zusammen!

Da ich gerade dabei bin mir PHP anzueignen, lese ich mir so einige Tutorials bzw. Anleitungen durch und da bin ich eine Äußerung gestoßen mit der ich nichts anzufangen weiß. Es wird in einem Tutorial zum Thema Arrays davon gesprochen, dass man die Daten eines Arrays nur dann in einer foreach Schleife bearbeiten kann, wenn man mit "Referenzen" arbeitet.

Ich weiß jedoch nicht was eine Referenz ist und die offizielle Beschreibung ist auch mehr als mau. Daher meine Frage: Was ist eine Referenz in bezug auf PHP bzw. eine foreach Schleife?

Gruß
Jens
Mit Zitat antworten
freelancermap.de - IT Projektvermittlung für Selbständige und Freiberufler
  #2 (permalink)  
Alt 21-08-2010, 20:40
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 3.734
h3ll befindet sich auf einem aufstrebenden Ast
Standard

PHP-Code:
$original 1;
$kopie $original;
$referenz =& $original;

echo 
$original;
// 1

echo $kopie;
// 1

echo $referenz;
// 1

$kopie 2;
$referenz 3;

echo 
$original;
// 3

echo $kopie;
// 2

echo $referenz;
// 3 
Mit Zitat antworten
  #3 (permalink)  
Alt 21-08-2010, 22:26
MalerJ
 Registrierter Benutzer
Links : Onlinestatus : MalerJ ist offline
Registriert seit: Aug 2010
Beiträge: 6
MalerJ befindet sich auf einem aufstrebenden Ast
Standard

Vielen Dank h3ll! Manchmal sagt code mehr als 1000 Worte
Mit Zitat antworten
  #4 (permalink)  
Alt 21-08-2010, 22:52
combie
 PHP Expert
Links : Onlinestatus : combie ist offline
Registriert seit: May 2006
Beiträge: 3.296
combie wird schon bald berühmt werden
Standard

Zitat:
PHP Referenzen in foreach Schleife
Dazu habe ich gerade einen lustigen Thread gefunden!
foreach und referenzierung? - SELFPHP Forum

hier mal mein Testcode:
PHP-Code:
<?php
error_reporting
(-1);
ini_set('display_errors'TRUE);
 

$filme = array('film1''film2'"film3"); 

var_dump($filme); 
echo 
"<br />";

foreach (
$filme as &$film
  
$film ucfirst($film); 

var_dump($filme); 

echo 
"<br />";
foreach (
$filme as $key=>$film
  echo 
"$key $film <br />";
?>
__________________
Wir werden alle sterben
Mit Zitat antworten
  #5 (permalink)  
Alt 22-08-2010, 09:22
eagle275
 Registrierter Benutzer
Links : Onlinestatus : eagle275 ist offline
Registriert seit: Jun 2010
Beiträge: 403
eagle275 befindet sich auf einem aufstrebenden Ast
Standard

das kann sich eigentlich nur darauf beziehen, wenn man Werte des Array manipulieren will und wieder im Array ablegen will.. meine eigene Erfahrung sagt

foreach($array as $key=>$element) {
...

}
reicht meist aus

und da seh ich keine Referenz
__________________

Wer LESEN kann, ist klar im Vorteil!
Mit Zitat antworten
  #6 (permalink)  
Alt 22-08-2010, 10:00
combie
 PHP Expert
Links : Onlinestatus : combie ist offline
Registriert seit: May 2006
Beiträge: 3.296
combie wird schon bald berühmt werden
Standard

Was du da siehst, ist mir egal .....

Was ich da sehe:
Da wurde ein Feature eingeführt, welches nicht richtig funktioniert. Und anstatt es zu reparieren, wurde es im Handbuch dokumentiert.

Der blanke Wahnsinn!
Und was ist, wenn das letzte Element noch gebraucht wird?
Da gibts dann nur einen Weg: Erst einen Dummy ans Array dran kleben und nach der Schleife wieder löschen.
Pfusch!
Pfusch!
Pfusch!
(da könnte ich mich noch Stunden drüber aufregen)


array_(map/walk) ist auch nicht immer der schönste Weg.







"
__________________
Wir werden alle sterben
Mit Zitat antworten
  #7 (permalink)  
Alt 22-08-2010, 10:20
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 3.734
h3ll befindet sich auf einem aufstrebenden Ast
Standard

*nix*

Geändert von h3ll (22-08-2010 um 10:22 Uhr)
Mit Zitat antworten
  #8 (permalink)  
Alt 22-08-2010, 10:23
eagle275
 Registrierter Benutzer
Links : Onlinestatus : eagle275 ist offline
Registriert seit: Jun 2010
Beiträge: 403
eagle275 befindet sich auf einem aufstrebenden Ast
Standard

aber hell .. sollte in deinem ersten Codeschnipsel

$filme[$i]=ucfirst($filme[$i]);

auch tun?
__________________

Wer LESEN kann, ist klar im Vorteil!
Mit Zitat antworten
  #9 (permalink)  
Alt 22-08-2010, 10:28
Benutzerbild von onemorenerd onemorenerd
  Moderator
Links : Onlinestatus : onemorenerd ist offline
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.471
onemorenerd wird schon bald berühmt werdenonemorenerd wird schon bald berühmt werden
Standard

Nein, das sehe ich anders. "Funktioniert nicht richtig" ist falsch, es gibt nichts zu reparieren. Das Feature (foreach) hat gewisse Seiteneffekte, die im Manual dokumentiert sind. Diese Effekte nimmt man in Kauf, um die Ausführungsgeschwindigkeit hoch zu halten. Wenn du mit den Effekten nicht leben kannst, führe vor jedem foreach ein reset($filme) aus und nach dem foreach ein unset($film).
Anders ausgedrückt: Die PHP-Entwickler haben das Aufräumen nach dem foreach nicht implementiert, so dass es dem Anwender überlassen bleibt. Damit kann er selbst entscheiden, ob ihm Performance oder "Sauberkeit" wichtiger ist.
C-Programmierer kennen das, die müssen immer selber aufräumen. ;-)
Mit Zitat antworten
  #10 (permalink)  
Alt 22-08-2010, 10:32
combie
 PHP Expert
Links : Onlinestatus : combie ist offline
Registriert seit: May 2006
Beiträge: 3.296
combie wird schon bald berühmt werden
Standard

Zitat:
PHP-Code:
$filme[$i]=ucfirst($filme[$i]); 
Na klar tuts das!

Aber nichts desto Trotz:
Wenn man schon Referenzen in Foreach einführt, dann sollte man das richtig machen.
Und nicht so was kaputtes produzieren.
Manchmal verstehe ich die PHP Entwickler nicht.

Zitat:
aus und nach dem foreach ein unset($film)
wenn ich die Daten in der Schleife verändere, dann will ich danach noch damit weiter arbeiten.
Sonst bräuchte ich sie ja nicht darin zu veränden.

Zitat:
Die PHP-Entwickler haben das Aufräumen nach dem foreach nicht implementiert, so dass es dem Anwender überlassen bleibt. Damit kann er selbst entscheiden, ob ihm Performance oder "Sauberkeit" wichtiger ist.
C-Programmierer kennen das, die müssen immer selber aufräumen. ;-)
Schöne Argumente...
Nur sind wir hier nicht in C..
Mal abwarten, was uns die PHP Entwickler, mit solchen oder ähnlichen Argumenten, noch so alles unterjubeln.
__________________
Wir werden alle sterben

Geändert von combie (22-08-2010 um 10:38 Uhr)
Mit Zitat antworten
  #11 (permalink)  
Alt 22-08-2010, 21:06
Benutzerbild von onemorenerd onemorenerd
  Moderator
Links : Onlinestatus : onemorenerd ist offline
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.471
onemorenerd wird schon bald berühmt werdenonemorenerd wird schon bald berühmt werden
Standard

Zitat:
Zitat von combie Beitrag anzeigen
wenn ich die Daten in der Schleife verändere, dann will ich danach noch damit weiter arbeiten.
Sonst bräuchte ich sie ja nicht darin zu veränden.
Das unset() wird benutzt um die Referenz auf den letzten Arrayeintrag zu zerstören. Der Eintrag selbst bleibt davon unberührt.
Wären Referenzen in foreach so implementiert wie du es dir wünscht, gäbe es diese Referenz gar nicht mehr. In diesem Sinne macht dieses unset() nichts kaputt sondern ganz.

Ich gebe zu, dass es nicht ganz zur Sprache passt, wie die Entwickler das umgesetzt haben. Aber mal ehrlich, wer in foreach mit Referenz arbeitet, der ist ein Pro und weiß was er tut. Solche Leute können auch mit den Nebenwirkungen umgehen, sollte man meinen.
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Variable aus foreach-Schleife außerhalb der Schleife nicht verwendbar Tiafe PHP Developer Forum 4 30-06-2009 15:42
Problem mit foreach-schleife spaff PHP Developer Forum 3 13-06-2007 11:47
foreach schleife DarksoldierXX PHP Developer Forum 12 14-03-2007 15:11
foreach schleife pippo PHP Developer Forum 8 11-10-2004 18:58
foreach-Schleife Johannes PHP Developer Forum 7 22-02-2002 18:19

Themen-Optionen
Thema bewerten
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.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

PHP Marktplatz-Software
PHP Marktplatz-SoftwareEs hat sich viel getan! Die neue Version 7.5.9 unserer PHP Marktplatz-Software ebiz-trader steht ab sofort zur Verfügung.

28.10.2019 | Berni

Die RIGID-FLEX-Technologie
Die RIGID-FLEX-TechnologieDie sogenannte "Flexible Elektronik" , oftmals auch als "Flexible Schaltungen" bezeichnet, ist eine zeitgemäße Technologie zum Montieren von elektronischen Schaltungen.

06.12.2018 | Berni


 

Aktuelle PHP Scripte

SMT

Server Monitoring & Management Tool Das SMT wurde von einem Administrator für Administratoren entwickelt, es vereinfacht den Alltag in der klassischen Administration und Verwaltung. Mit dem SMT kannst Du alle Deine Server & Dienste verwalten und überwach

09.10.2020 palle_1977 | Kategorie: PHP
phplinX-Erotikportal 4 ansehen phplinX-Erotikportal 4

Erweiterbares Portal speziell für Erotik mit den Modulen Webkatalog, Bannermanagement und Kleinanzeigenmarkt. Sämtliche Module können über einen einzigen Adminbereich verwaltet werden.

18.06.2020 Cosinus14 | Kategorie: PHP/ Anzeigenmarkt
Erotik-Portal

Mit unsererem Erotik-Portal erhalten Sie ein komplettes Internetprojekt inklusive einer bedienerfreundlichem Administration sowie zahlreichen wichtigen Funktionen. Unser auf PHP und MySQL basierendes Script bietet Ihnen - und Ihren Besuchern - komfort

18.06.2020 ISD-Genthin | Kategorie: PHP/ Anzeigenmarkt
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 00:39 Uhr.