[PHP] Anfänger: Variable variablen und if-Abfrage

Sascha91

KlammID: 236083
ID: 236083
L
4 Mai 2006
148
2
Hallo,

Ich versteh die Welt nicht mehr.

Aus dem Code Schnippsel ${'s_'.$serie_nummer.'[1]'} sollte doch $s_1[1] entstehen wenn $serie_nummer 1 ist.

PHP:
$s_1 = array("6","bla");

If(date('w') == ${'s_'.$serie_nummer.'[1]'})
Daraus ensteht: If(6 == 6)

Wo ist der Fehler?
 
Das ist ein Array, also
PHP:
${'s_'.$serie_nummer}[1]
;)
 
Es tut mir leid, wenn ich euch arbeiten/überlegen lasse. Aber wo ist der Fehler?

config.php
PHP:
<?php
$serie_anzahl = 1;
$s_1 = array("6","bla");
?>
tv.php
PHP:
<?php 
include("header.php");
include("config.php");
?>

<?php
for($serie_nummer =  0; $serie_nummer < $serie_anzahl; $serie_nummer++)
    {
    If(date("w") == ${"s_".$serie_nummer}[1])
        {
        echo "richtig";
        }
    Else
        {
        echo "falsch";
        }
    }
?>

<?php include("footer.php"); ?>
 
Zuletzt bearbeitet:
Da wird auch auf $s_0[1] zugegriffen, weil die for-Schleife bei 0 anfängt.

Ändere es einfach so ab:
PHP:
for($serie_nummer = 1; $serie_nummer <= $serie_anzahl; $serie_nummer++)

Und noch als Tipp: Wenn du dir nicht genau sicher bist, auf was das zugreift, könntest du ja einfach mal so testen:
PHP:
$temp = "s_".$serie_nummer; 
echo $temp;

Das könntest du dann auch weiterverwenden:
PHP:
$weiter = $$temp[1];
 
Ja, das mit der 0 wusste ich, habs aber noch gelassen. Auch mit echo hab ich es schon Probiert und bei der If-Abfrage zeigt er die Variable hinter dem Gleich nicht an. Wieso?
 
Ja wie du hast es aber gelassen? Die Schleife wird einmal durchlaufen und zwar mit dem Wert $serie_nummer = 0 und du wunderst dich, warum dann nicht die 1 verwendet wird? :roll: :wall:

PHP:
$s_1 = array(123, 456);
$serie_anzahl = 1;

for($serie_nummer = 1; $serie_nummer <= $serie_anzahl; $serie_nummer++){
  $temp = 's_'.$serie_nummer;
  echo $temp.'<br>';

  if(456 == ${'s_'.$serie_nummer}[1]) {
    echo "richtig";
  } else {
    echo "falsch";
  }
}

Funktioniert doch einwandfrei. Ausgabe:
HTML:
s_1
richtig


Und auch mit deinem Codeschnipsel funktioniert es, dann muss man nur innerhalb der Schleife wieder die Werte anpassen.
PHP:
for($serie_nummer =  0; $serie_nummer < $serie_anzahl; $serie_nummer++)
    {
    If(456 == ${"s_".($serie_nummer+1)}[1])
        {
        echo "richtig";
        }
    Else
        {
        echo "falsch";
        }
    }

Und das ist genau der Grund, warum Schleifen bei mir immer mit dem Wert 1 beginnen und bis inclusive dem höchsten Wert laufen ($a = 1; $a <= $b; $a++) und falls ich mal ein bei 0 beginnendes Array verwenden möchte, schreibe ich lieber innerhalb der Schleife dann $erg += $arr[$a-1] * $a statts $erg += $arr[$a] * ($a-1);