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-12-2007, 02:34
Benny-one
 Master
Links : Onlinestatus : Benny-one ist offline
Registriert seit: Jan 2002
Ort: Fulda
Beiträge: 5.700
Benny-one ist zur Zeit noch ein unbeschriebenes Blatt
Benny-one eine Nachricht über ICQ schicken
Standard Merkwürdiges foreach Verhalten

Ich fall mal mit der Tür ins Haus und zeige mein Schnipsel:

PHP-Code:
foreach ($total_array_not_unique[$row_order['website_id']]['stats'][$year
as 
$month_key => $month_visits) {
    
// hier steht nichts

Das oben genannte führt dazu, dass in z.Z. genau einem einzigen Fall, die foreach Schleife (in der sich auch der oben genannte Schnipsel befindet) nur ein einziges mal komplett durchlaufen wird.

Kommentiere ich die Schleife aus, so läuft die foreach-Schleife, in der sich der Schnipsel oben befindet, korrekterweise 3mal durch.

Wenn ich den Schnipsel jetzt so ändere:

PHP-Code:
$test $total_array_not_unique[$row_order['website_id']]['stats'][$year];
foreach (
$test as $month_key => $month_visits) {
    
// hier steht nichts

wird die obere Schleife korrekt 3mal durchlaufen. Lasse ich $test weg und schreibe den Array (also $total_array_not_unique[...]) direkt in die Schleife, wird die obere - nennen wir sie mal Hauptschleife, nur ein einziges mal durchlaufen.

Ich komme einfach nicht dahinter, wieso sich das Ding so verhält.
Mit Zitat antworten
  #2 (permalink)  
Alt 21-12-2007, 02:53
unset
  Moderator
Links : Onlinestatus : unset ist offline
Registriert seit: Jan 2007
Ort: Düsseldorf
Beiträge: 3.782
unset befindet sich auf einem aufstrebenden Ast
Standard

Wie sieht das Array denn genau aus?
Mit Zitat antworten
  #3 (permalink)  
Alt 21-12-2007, 11:31
Benny-one
 Master
Links : Onlinestatus : Benny-one ist offline
Registriert seit: Jan 2002
Ort: Fulda
Beiträge: 5.700
Benny-one ist zur Zeit noch ein unbeschriebenes Blatt
Benny-one eine Nachricht über ICQ schicken
Standard

PHP-Code:
$total_array = array(25=>array('stats'=>array(2007=>array(10=>211=>212=>2)))) 
Was mich ja so verwirrt ist, dass es funktioniert, wenn ich den Inhalt in die Variable $test kopiere
Mit Zitat antworten
  #4 (permalink)  
Alt 21-12-2007, 11:42
unset
  Moderator
Links : Onlinestatus : unset ist offline
Registriert seit: Jan 2007
Ort: Düsseldorf
Beiträge: 3.782
unset befindet sich auf einem aufstrebenden Ast
Standard

Ich meine eher dieses Array: $total_array_not_unique.
Mit Zitat antworten
  #5 (permalink)  
Alt 21-12-2007, 11:44
Benny-one
 Master
Links : Onlinestatus : Benny-one ist offline
Registriert seit: Jan 2002
Ort: Fulda
Beiträge: 5.700
Benny-one ist zur Zeit noch ein unbeschriebenes Blatt
Benny-one eine Nachricht über ICQ schicken
Standard

Sorry, ist das gleiche, habe ausversehen statt $total_array_not_unique nur $total_array geschrieben.
Mit Zitat antworten
  #6 (permalink)  
Alt 21-12-2007, 11:47
H2O
 PHP Junior
Links : Onlinestatus : H2O ist offline
Registriert seit: Jul 2007
Beiträge: 937
H2O ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Es sieht fast so aus, als würde innerhalb der Schleife einer der Indizes verändert.
__________________
Gruss
H2O
Mit Zitat antworten
  #7 (permalink)  
Alt 21-12-2007, 11:48
combie
 PHP Expert
Links : Onlinestatus : combie ist offline
Registriert seit: May 2006
Beiträge: 3.296
combie wird schon bald berühmt werden
Standard

Untestbar!!
Zitat:
Notice: Undefined variable: row_order in H:\Programme\xampp\htdocs\fragmente\foreach_bad.php on line 9 Notice: Undefined index: in H:\Programme\xampp\htdocs\fragmente\foreach_bad.php on line 9 Notice: Undefined variable: year in H:\Programme\xampp\htdocs\fragmente\foreach_bad.php on line 9 Warning: Invalid argument supplied for foreach() in H:\Programme\xampp\htdocs\fragmente\foreach_bad.php on line 10
Das $total_array entspricht nicht dem in der Foreach!!
__________________
Wir werden alle sterben

Geändert von combie (21-12-2007 um 11:50 Uhr)
Mit Zitat antworten
  #8 (permalink)  
Alt 21-12-2007, 11:48
unset
  Moderator
Links : Onlinestatus : unset ist offline
Registriert seit: Jan 2007
Ort: Düsseldorf
Beiträge: 3.782
unset befindet sich auf einem aufstrebenden Ast
Standard

Ich kann dieses Verhalten mit PHP5 nicht reproduzieren. Tut mir leid
Mit Zitat antworten
  #9 (permalink)  
Alt 21-12-2007, 11:52
Benny-one
 Master
Links : Onlinestatus : Benny-one ist offline
Registriert seit: Jan 2002
Ort: Fulda
Beiträge: 5.700
Benny-one ist zur Zeit noch ein unbeschriebenes Blatt
Benny-one eine Nachricht über ICQ schicken
Standard

Zitat:
Original geschrieben von unset
Ich kann dieses Verhalten mit PHP5 nicht reproduzieren. Tut mir leid
Das könnte ich sogar nachvollziehen. Ich werde jetzt die Schleife nehmen, an Anfang packen und alles andere auskommentieren und dann prüfen, ob es 3mal durchläuft.
Mit Zitat antworten
  #10 (permalink)  
Alt 21-12-2007, 12:22
Benny-one
 Master
Links : Onlinestatus : Benny-one ist offline
Registriert seit: Jan 2002
Ort: Fulda
Beiträge: 5.700
Benny-one ist zur Zeit noch ein unbeschriebenes Blatt
Benny-one eine Nachricht über ICQ schicken
Standard

Okay, irgendwie verschluckt sich PHP an meinen Referenzen. Habe jetzt weiter oben zwei Referenzen entfernt, jetzt läuft es einwandfrei.
Mit Zitat antworten
  #11 (permalink)  
Alt 21-12-2007, 12:25
unset
  Moderator
Links : Onlinestatus : unset ist offline
Registriert seit: Jan 2007
Ort: Düsseldorf
Beiträge: 3.782
unset befindet sich auf einem aufstrebenden Ast
Standard

Hö? Wo hast du denn Referenzen benutzt? In dem geposteten Code jedenfalls nicht. Darauf hättest du natürlich hinweisen sollen, zumal ich sowas eh vermutet habe
Mit Zitat antworten
  #12 (permalink)  
Alt 21-12-2007, 13:08
Benny-one
 Master
Links : Onlinestatus : Benny-one ist offline
Registriert seit: Jan 2002
Ort: Fulda
Beiträge: 5.700
Benny-one ist zur Zeit noch ein unbeschriebenes Blatt
Benny-one eine Nachricht über ICQ schicken
Standard

Ja, hatte ich auch erst nicht vermutet, weil die Referenz nicht mal mit der Schleife zu tun hatte. Naja, jetzt gehts, trotzdem irgendwie strange.
Mit Zitat antworten
  #13 (permalink)  
Alt 21-12-2007, 13:10
PHP-Desaster
 PHP Expert
Links : Onlinestatus : PHP-Desaster ist offline
Registriert seit: Mar 2006
Beiträge: 3.105
PHP-Desaster befindet sich auf einem aufstrebenden Ast
Standard

PHP hat Probleme mit Referenzen in Arrays. Hoffe, in der 6er Version wird da mal ein wenig aufgeräumt!
In bestimmten Fällen bekommst du wenigstens eine Notice:
PHP-Code:
<?php
error_reporting
E_ALL );    
class 
Test {
    private 
$var = array( 'foo'=>'foo' );
    function &
getByRef$name ) {
        return( 
$this->var[$name] );
    }
}
$t = new Test();
$t->getByRef'foo' );
?>
ergibt:
Zitat:
Notice: Only variable references should be returned by reference in xxx.php on line 7

Geändert von PHP-Desaster (21-12-2007 um 13:13 Uhr)
Mit Zitat antworten
  #14 (permalink)  
Alt 21-12-2007, 13:20
Benny-one
 Master
Links : Onlinestatus : Benny-one ist offline
Registriert seit: Jan 2002
Ort: Fulda
Beiträge: 5.700
Benny-one ist zur Zeit noch ein unbeschriebenes Blatt
Benny-one eine Nachricht über ICQ schicken
Standard

Ja diesen Fall hatte ich auch schon. Irgendwie nervig....
Mit Zitat antworten
  #15 (permalink)  
Alt 21-12-2007, 18:28
3DMax
 PHP Senior
Links : Onlinestatus : 3DMax ist offline
Registriert seit: Jan 2004
Beiträge: 1.916
3DMax ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von PHP-Desaster
PHP-Code:
return( $this->var[$name] ) 
ohne klammern bei return kommt keine notice.

http://de2.php.net/manual/de/function.return.php
Zitat:
Hinweis: Beachten Sie, dass return() ein Sprachkonstrukt und keine Funktion ist. Die Klammern um ein Argument sind deshalb nur zwingend notwendig, wenn es sich um einen Ausdruck handelt, dessen Ergebnis zurückgegeben werden soll. Es ist gebräuchlich die Klammern wegzulassen, wenn eine Variable zurück gegeben soll.
Mit Zitat antworten
Antwort

Lesezeichen


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

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

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

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni


 

Aktuelle PHP Scripte

HeidiSQL - kostenloses MySQL front-end Editor für Windows ansehen HeidiSQL - kostenloses MySQL front-end Editor für Windows

HeidiSQL - ist ein Windows-Editor für die bekannt open Source Datenbank mySQL

10.12.2018 Berni | Kategorie: MYSQL/ Management
piwik Open-Source Webanalyse-Software ansehen piwik Open-Source Webanalyse-Software

piwik ist eine gute Alternative zu Google Analytics. Viele Features und ein modernes Erscheinungsbild mit aussagefähigen Statistiken in Echtzeit

10.12.2018 phpler | Kategorie: PHP/ Besucherzaehler
jQuery Mobile ansehen jQuery Mobile

Touch-Optimized Web Framework für Smartphones & Tablets

09.12.2018 phpler | Kategorie: AJAX/ Framework
 Alle PHP Scripte anzeigen

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