php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2008

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 06.12.2008, 21:58  
Neuer Benutzer
 
Registriert seit: 04.12.2008
Beiträge: 20
Stephan_87 befindet sich auf einem aufstrebenden Ast
Standard Vergleich zweier Variablen funktioniert nicht?

Hallo,

Ich dreh hier gerade durch

PHP-Code:

$prio 
1;

function 
__getHeadImage($ind) {
                     
            if (
$prio == $ind)
            return 
'p_p'.$ind.'_a.gif';
            else 
            return 
'p_p'.$ind.'_n.gif';
            
            
//return "p_p".$ind."_".( ($ind == $prio) ? "a" : "n").".gif";
    
    

Anhand der Werte nach p_p kann ich nachvollziehen, dass $ind immer den korrekten Wert hat.

Durch das setzen von $prio stelle ich sicher, dass $prio den Wert 1 hat (zum testen).

Wenn ich __getHeaderImage(1) aufrufe wird wie erwartet p_p1_a.gif zurückgegeben.

Rufe ich die Funktion jedoch so auf:

PHP-Code:
$i 1;
while (
$i<4) {
    echo 
__getHeaderImage($i);
    
$i++;

Bekomme ich folgende Ausgabe:

p_p1_n.gif
p_p2_n.gif
p_p3_n.gif

An dem p1, p2, p3 sieht man ja dass die Funktion definitiv mit den richtigen Argumenten aufgerufen wird! Nur erkennt PHP nicht mehr dass $ind == $prio ist !


Der Quellcode ist auf relevante Teile gekürzt. ICh versichere euch aber, dass ich nirgendwo ausversehen $prio umsetze oder ähnliches.
Stephan_87 ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 06.12.2008, 22:02  
Erfahrener Benutzer
 
Benutzerbild von David
 
Registriert seit: 05.09.2007
Beiträge: 5.044
David wird schon bald berühmt werden
Standard

Aber dass Du $prio außerhalb der Funktion setzt und innerhalb der Funktion verwenden willst, ist "richtig" verkürzt?
Dann interessiert Dich sicherlich PHP: Variable scope - Manual
David ist offline  
Alt 06.12.2008, 22:06  
Neuer Benutzer
 
Registriert seit: 04.12.2008
Beiträge: 20
Stephan_87 befindet sich auf einem aufstrebenden Ast
Standard

Ja, war richtig verkürzt und damit auch der Fehler.

Ich kenne keine Sprache in der man globale Variablen in einer Funktion erst einführen muss. Deshalb die unverständniss. Mir entzieht sich da momentan auch noch vollkommen der Sinn dahinter, aber irgendeinen Grund wirds wohl geben..

Wie auch immer, Danke!
Stephan_87 ist offline  
Alt 06.12.2008, 22:43  
Neuer Benutzer
 
Registriert seit: 04.12.2008
Beiträge: 20
Stephan_87 befindet sich auf einem aufstrebenden Ast
Standard

Leider doch noch nicht gelöst...:

Ich übergebe die Variable prio über die Adresse, also

todo.php?prio=1 oder 2 oder 3 usw.

Auf meinem Rechner funktioniert jetzt alles. Jetzt habe ich das skript ins Internet auf meinen Server hochgeladen und es funktioniert _nicht_.

Gibt es irgendeine Einstellung oder sowas die das Übergeben von Variablen über die Adresszeile verbietet ?
Stephan_87 ist offline  
Alt 06.12.2008, 22:51  
Moderator und Wett-König
 
Benutzerbild von dr.e.
 
Registriert seit: 21.05.2008
Beiträge: 3.657
PHP-Kenntnisse:
Fortgeschritten
dr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblick
dr.e. eine Nachricht über Skype™ schicken
Standard

-> Lerne Grundlagen. Stichwörter sind register_globals und der Gültigkeitsbereich, wie von David angesprochen.
__________________
Viele Grüße,
Dr.E.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1. Think about software design before you start to write code!
2. Discuss and review it together with experts!
3. Choose good tools (-> Adventure PHP Framework (APF))!
4. Write clean and reusable software only!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
dr.e. ist offline  
Alt 06.12.2008, 22:51  
Erfahrener Benutzer
 
Benutzerbild von Phoscur
 
Registriert seit: 01.12.2008
Beiträge: 450
PHP-Kenntnisse:
Fortgeschritten
Phoscur wird schon bald berühmt werdenPhoscur wird schon bald berühmt werden
Standard

"register_globals"
edit: naja da war wohl jmd schneller..
__________________
Phoscur ist offline  
Alt 06.12.2008, 22:58  
Erfahrener Benutzer
 
Registriert seit: 19.03.2007
Beiträge: 176
BlackWolf ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Zitat von Stephan_87 Beitrag anzeigen
Ja, war richtig verkürzt und damit auch der Fehler.

Ich kenne keine Sprache in der man globale Variablen in einer Funktion erst einführen muss. Deshalb die unverständniss. Mir entzieht sich da momentan auch noch vollkommen der Sinn dahinter, aber irgendeinen Grund wirds wohl geben..

Wie auch immer, Danke!
Dann hast du aber sicher keine Objekt-Orientierten Sprachen programmiert.
Das Konzept von OOP ist nämlich die Datenkapselung, und genauso ist es bei PHP in funktionen und seit PHP5 auch in Klassen.
Programmier z.B. mal Cocoa, da kannst du prinzipiell weder auf Eigenschaften von Objekten zugreifen noch diese schreiben. Das geht nur über Setter und Getter - Datenkapselung eben.

mfg
BlackWolf ist offline  
Alt 06.12.2008, 23:22  
Moderator
 
Benutzerbild von agrajag
 
Registriert seit: 02.10.2006
Beiträge: 3.820
PHP-Kenntnisse:
Fortgeschritten
agrajag wird schon bald berühmt werdenagrajag wird schon bald berühmt werden
Standard

Ähm BlackWolf, Stephan_87 hat da schon recht.
Dass man globale Variabeln erst über "global" in den Funktions-Scope holen muss, ist wirklich eine PHP Eigenart.
Das was du beschreibst, ist wieder was ganz anderes....
agrajag ist offline  
Alt 07.12.2008, 02:04  
Neuer Benutzer
 
Registriert seit: 04.12.2008
Beiträge: 20
Stephan_87 befindet sich auf einem aufstrebenden Ast
Standard

Okay danke euch...

Ihr habt schon recht mit dem Grundlagen lernen. Aber ich lerne prinzipiell am besten durch "learning while doing".

Und um mich etwas zu verteidigen: Mich nervt diese Inkonsistenz. Ich habe den Apache hier auf meinem Rechner laufen, da macht das Script exakt das was es soll. Ich lade es ins Internet hoch und da brauch ich dann plötzlich dieses register_globals - auf dem lokalen Server reichte aber anscheinend das Einführen durch global innerhalb der Funktion.

Sofern ich nicht etwas überlesen habe steht diesbzgl. auch nichts auf der von David verlinkten Seite.

Aber ich google jetzt mal danach was es mit register_globals auf sich hat.

Danke nochmal.

edit: Okay, jetzt ist alles klar. Auf dem localhost ist register_globals=on gesetzt, auf dem im Web nicht.
Stephan_87 ist offline  
Alt 07.12.2008, 02:09  
Erfahrener Benutzer
 
Benutzerbild von David
 
Registriert seit: 05.09.2007
Beiträge: 5.044
David wird schon bald berühmt werden
Standard

Zitat:
Zitat von Stephan_87 Beitrag anzeigen
Sofern ich nicht etwas überlesen habe steht diesbzgl. auch nichts auf der von David verlinkten Seite.
global hat auch erstmal nichts mit register_globals zu tun.
siehe PHP: Using Register Globals - Manual
David ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine 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
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Klasse statt globaler Variablen ecomeback PHP-Fortgeschrittene 6 15.07.2008 16:30
Fehler bei Übergabe von Variablen aus MySQL in Firefox jensoweber Datenbanken 0 13.07.2008 13:14
Übergeben von Variablen an in PHP eingebundenes Perl-Script shredder01 PHP Tipps 2008 3 04.04.2008 09:25
Datei mit Variablen so includen, dass Variablen nutzbar? BartTheDevil89 PHP Tipps 2008 6 22.01.2008 20:57
Variablen über URL übergeben funktioniert nur noch mit $_GET ZeHa PHP Tipps 2008 8 18.08.2007 16:25
unerklärliches Leeren von Variablen KuShi PHP Tipps 2007 2 08.07.2007 15:19
preg_match_all mit variablen funktioniert nicht. c01001 PHP Tipps 2007 6 22.04.2007 00:30
Teil einer Variablen mit einer Variablen ersetzen ? simsalabim PHP Tipps 2007 11 20.03.2007 20:36
Session funktioniert nicht bei session.use_cookies = Off Quagga PHP Tipps 2007 13 13.01.2007 18:27
Vergleich zweier Tabellen Mandalay Datenbanken 11 22.03.2006 06:32
Kontakrformular funktioniert nur zum Teil PHP Tipps 2005-2 12 18.07.2005 11:24
Variablen übergeben bzw. auslesen? PHP Tipps 2005 4 30.01.2005 03:56
2 variablen in einem Value tag PHP Tipps 2005 17 26.01.2005 20:32
[Erledigt] register globals off bei variablen Variablen... PHP Tipps 2005 4 25.01.2005 17:50
Variablen per adresse übergeben rocco PHP Tipps 2004 7 24.07.2004 12:03

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php vergleich, http://www.php.de/php-tipps-2008/49625-vergleich-zweier-variablen-funktioniert-nicht.html, php strings vergleichen, php string vergleichen, php variablen vergleichen, php vergleich variablen, php vergleich zweier variablen, variablenvergleich javascript, php vergleich klappt nicht, php vergleich von variablen, zwei strings vergleichen php, php vergleich 2 variablen, vergleich zweier variablen, php vergleich variable, vergleich von variablen php, variablen vergleichen php, variablenvergleich php, php code vergleich zweier variablen, variablenvergleich in perl, variablen vergleich php

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




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum