Zitat von Lehrling1991
Beitrag anzeigen
Foreach Variable wird nicht geändert
Einklappen
X
-
Zitat von h3ll Beitrag anzeigenDu sollst die Session nicht als globalen Variablenspeicher missbrauchen.
Dein Problem ist offenbar die Schleife selber, und nicht die PHP-Variablen.ok hab ich dann auch schon wieder verworfen..PHP-Code:echo '<ul class="t1">';
$tiefejetzt = 1;
foreach ($entries as $entry) {
if ($entry['path'] != './Inhalt'){
if ($tiefejetzt == $entry['depth']) {
echo '<li><a href="./Startseite.php?l=' . $entry['path'] . '">' . $entry['title'] . '</a>';
echo '</li>';
}
else {
if ($tiefejetzt < $entry['depth']) {
$tiefe = "t".$entry['depth'];
echo '<li>';
echo $ausgabe = "<ul class='$tiefe'>";
$tiefejetzt = $tiefejetzt + 1;
}
elseif ($tiefejetzt > $entry['depth']) {
echo '</ul>';
echo '</li>';
$tiefejetzt = $tiefejetzt -1;
}
}
}
echo $tiefejetzt; //Wird korrekt rauf bzw. runtergezählt
} echo $tiefejetzt; //Bleibt konstant 1
echo '</ul>';
Aber schau mal, wenn ich die Variable innerhalb der Schleife ausgebe, hat sie den richtigen Wert. (Hier das erste echo am Schluss.)
Das zweite echo nach der Schleife zeigt mir, das der Wert innerhalb von foreach abgeschirmt wird und den Wert der Variable ausserhalb nicht ändert.
Wie kann ich nun diese Variable so gestalten, das die Änderungen auch ausserhalb der foreach-Schleife gültig sind?
Aber wenn du meinst meine Schleife sei das Problem, wiso denn das? Sehs erlich gesagt gerade nicht.. Die ist doch richtig aufgebaut etc?
mfg derLehrling
Einen Kommentar schreiben:
-
Du sollst die Session nicht als globalen Variablenspeicher missbrauchen.
Dein Problem ist offenbar die Schleife selber, und nicht die PHP-Variablen.
Einen Kommentar schreiben:
-
Na ich weiss es nicht.. Hab jetzt schon diverse Sachen probiert, und die Variable ausserhalb ist immer 1.. Bis jetzt konnte ich den Wert innerhalb ändern, jedoch ausserhalb war sie sofort wieder 1..Zitat von h3ll Beitrag anzeigenWarum sollte das nicht möglich sein?
Was ich jetzt gerade probiert habe, ist daraus eine Sessionvariable zu generieren, jedoch auch ohne Erfolg..
Wie mache ich die Änderung global gültig?? Da liegt doch mein Fehler oder? Die Variable wird momentan nur Schleifenintern geändert.PHP-Code:echo '<ul class="t1">';
$_SESSION["username"] = 1;
foreach ($entries as $entry) {
if ($entry['path'] != './Inhalt'){
if ($_SESSION["username"] == $entry['depth']) {
echo '<li><a href="./Startseite.php?l=' . $entry['path'] . '">' . $entry['title'] . '</a>';
echo '</li>';
}
else {
if ($_SESSION["username"] < $entry['depth']) {
$tiefe = "t".$entry['depth'];
echo '<li>';
echo $ausgabe = "<ul class='$tiefe'>";
$_SESSION["username"] = $_SESSION["username"] + 1;
}
elseif ($_SESSION["username"] > $entry['depth']) {
echo '</ul>';
echo '</li>';
$_SESSION["username"] = $_SESSION["username"] -1;
}
}
}
} echo $_SESSION["username"];
echo '</ul>';
Einen Kommentar schreiben:
-
Warum sollte das nicht möglich sein?Zitat von Lehrling1991 Beitrag anzeigenIst es überhaupt möglich die Variable innerhalb von foreach zu ändern?
Einen Kommentar schreiben:
-
Oh das sollte nicht da stehen.. Schon wieder gelöscht, war ein Versuch die Variable innerhalb von foreach mit der Variable ausserhalb zu verknüpfen.. Ist es überhaupt möglich die Variable innerhalb von foreach zu ändern?Zitat von wahsaga Beitrag anzeigenWas willst du mit global am Beginn des Schleifenkörpers? Das ist vollkommen unsinnig dort, die Variable ist an der Stelle sowieso sichtbar.
Einen Kommentar schreiben:
-
Was willst du mit global am Beginn des Schleifenkörpers? Das ist vollkommen unsinnig dort, die Variable ist an der Stelle sowieso sichtbar.
Einen Kommentar schreiben:
-
Foreach Variable wird nicht geändert
Hallo Zusammen
Folgendes Problem: ICh definiere ausserhalb meiner foreach-Schleife eine Variable $tiefejetzt.
Diese verändere ich während der Schleifendurchläufe. Damit das ganze funktioniert müsste diese Änderung global geschehen, also auch ausserhalb von foreach vorhanden sein.
Hab ein paar Sachen darüber gelesen, und meiner Meinung nach sollte es so funktionieren.
Wie ihr sicher schon vermutet, es funktioniert nicht! Das echo nach der Schleife zeigt mir immer eine 1, egal auf welcher Ebene wir uns befinden.
Hier mein PHP-Code
mein array ist so aufgebaut:PHP-Code:echo '<ul class="t1">';
$tiefejetzt = 1;
foreach ($entries as $entry) {
global $tiefejetzt;
if ($entry['path'] != './Inhalt'){
if ($tiefejetzt == $entry['depth']) {
echo '<li><a href="./Startseite.php?l=' . $entry['path'] . '">' . $entry['title'] . '</a>';
echo '</li>';
}
else {
if ($tiefejetzt < $entry['depth']) {
$tiefe = "t".$entry['depth'];
echo '<li>';
echo $ausgabe = "<ul class='$tiefe'>";
$tiefejetzt = $tiefejetzt + 1;
}
elseif ($tiefejetzt > $entry['depth']) {
echo '</ul>';
echo '</li>';
$tiefejetzt = $tiefejetzt -1;
}
}
}
} echo $tiefejetzt; //Um zu testen welchen Wert die Variable nach dem jeweiligen Durchlauf hat
echo '</ul>';
Gibt es eine Möglichkeit die Variable innerhalb der foreach-Schleife zu ändern?PHP-Code:$ret[] = array(
'depth' => $depth,
'path' => $path,
'title' => basename($path) //Basename gibt letzten Namensteil einer Pfadangabe zurück
);
MFG
derLehrlingStichworte: -
Einen Kommentar schreiben: