• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Frage zu Variablen

HPSK

Neues Mitglied
Hallo liebe Communty,
Ich habe eine Frage zu Variablen in PHP. und zwar möchte ich diese, jenach dem was in $variable1 ist bestimmen.

Ich habe es bereits so versucht:

PHP:
if($variable1 == 'wert1.1'){
   $variable2 = 'wert2.1'
}
if($variable1 == 'wert1.2'){
   $variable2 = 'wert2.2'
}

Ist dies möglich? Ich hoffe ihr versteht was ich mein.Vielen Dank schonmal.

MFG
 
Wenn du $variable2 bereits vor der if-Abfrage erstellt hast, dann funktionierts.

Ansonsten wird $variable2 erst innerhalb der Abfrage erstellt und ist dann ausserhalb nicht mehr zu erreichen. Das ganze nennt man den scope der Variable.
 
Es funktioniert auch so. In PHP muss man Variablen nicht deklarieren, wie in den meisten Hochsprachen.

Deine Abfrage setzt den Wert von $variable2 in Abhängigkeit von $variable1, es kann aber auch sein, dass $variable2 nicht gesetzt/erzeugt wird, nämlich, wenn $variable1 einen anderen Wert als "wert1.1" und "wert1.2" hat.

Reicht Dir diese Antwort? Wenn nicht, solltest Du Dein Anliegen etwas ausführlicher formulieren.
 
Es funktioniert schon, aber man geht das Risiko ein, dass $variable2 nicht gesetzt ist:

PHP:
<?php

error_reporting(E_ALL | E_STRICT);

$variable1 = 'wert1.3';

if($variable1 == 'wert1.1') {
   $variable2 = 'wert2.1';
}

if($variable1 == 'wert1.2') {
   $variable2 = 'wert2.2';
}

// Notice: Undefined variable: variable2 ... on line 16
echo $variable2;

Jede Variable sollte definitiv gesetzt sein, bevor ihr Wert abgefragt wird.

PHP:
<?php

error_reporting(E_ALL | E_STRICT);

$variable1 = 'wert1.3';
$variable2 = '';

// ...

Statt mit verschiedenen unverbundenen if-Statements zu arbeiten, würden sich else-if oder switch-case anbieten:

PHP:
if($variable1 == 'wert1.1') {
   $variable2 = 'wert2.1';
} else if ($variable1 == 'wert1.2') {
   $variable2 = 'wert2.2';
}

// Oder

switch ($variable1) {
    case 'wert1.1':
        $variable2 = 'wert2.1';
        break;
    case 'wert1.2':
        $variable2 = 'wert2.2';
        break;
    default:
        $variable2 = 'unbekannt';
        break;
}
 
Also, konkret ist mein Problem, dass bei dem Code nichts angezeigt wird:

<?php
$variable1 == '1';

if($variable1 == '0') {
$variable2 = '0';
}
if($variable1 == '1') {
$variable2 = '1';
}

echo $variable2;
?>

Ich hoffe, ihr wisst, was ich damit erreichen will.
 
Du benutzt in der 2. Zeile keinen Zuweisungsoperator, sondern einen Gleichheitsoperator.
So wäre es richtig:
$variable1 = '1';
 
Und das bereits genannte Problem des Scopes der Variable dürfte hier auch vorhanden sein, die Variable $variable2 wird erst innerhalb des if-Blocks erstellt und existiert nur innerhalb selbigem.
 
Ist das wirklich so in PHP? In C & Konsorten ist das so, ja, aber in PHP?
 
Du benutzt in der 2. Zeile keinen Zuweisungsoperator, sondern einen Gleichheitsoperator.
So wäre es richtig:
$variable1 = '1';

Hmm... Ich möchte ja das Gleichheitszeichen - denn es soll ja nur so sein, wenn das gleich ist... Oder verstehe ich da was falsch?
// edit: Oh, du meinst ganz oben, ja das ist natürlich falsch. War ein schreibfehler. Ich versuchs mal in dem ich den korrigiere.

Ich versuchs mal, in dem ich das Scope beachte - wenns dan funktioniert ist gut.

MFG

----------------
edit:
Okay, so funktionierts! Vielen Dank. Das hilft mir einiges.
<?php
$variable1 = '0';

if($variable1 == '0') {
$variable2 = '0';
}
if($variable1 == '1') {
$variable2 = '1';
}

echo $variable2;
?>
 
Commodore schrieb:
Und das bereits genannte Problem des Scopes der Variable dürfte hier auch vorhanden sein, die Variable $variable2 wird erst innerhalb des if-Blocks erstellt und existiert nur innerhalb selbigem.

Ist "leider" nicht so:

PHP:
<?php

if (true) {
    $foo = 'bar';
}

// Ausgabe: "bar"
echo $foo;

Aber wie ich oben schon geschrieben habe: Sauber ist es, die Variable explizit vor dem if-Konstrukt zu deklarieren. (Also so, als wäre es so, wie Commodore schreibt.)

PHP:
<?php

$foo = '';

if (true) {
    $foo = 'bar';
}

// Ausgabe: "bar"
echo $foo;

HPSK schrieb:
Oh, du meinst ganz oben, ja das ist natürlich falsch. War ein schreibfehler.

Das war der einzige Fehler.
 
Wer Zur Hölle ist auf die Idee gekommen, den scope von Variablen so groß zu machen?!?

Scheinbar gibt es in PHP nur einen Fall in dem der scope eingeschraenkt ist, das ist bei Funktionen: PHP: Variable scope - Manual
 
Zurück
Oben