• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

php variablen

nvidia

New member
Hallo, also ich komm von anderen Programmiersprachen und da gibst immer ein bisschen Unterschiede.
Aber ein was ist unglaublich nervig.
a) Wieso werden nie Variablen nach den } wieder gelöscht? man muss immer alle Variablen davor resetten, weil sie in der nächsten schleife wieder den alten Wert haben.
Ich glaub das kann man nicht ändern
b) $id_array[$last_folder -1]
Warum funktioniert das nicht?
das funktioniert nicht, das einzige das bis jetzt ging war das:
if($value_counter == sizeof($box_split)-1)
Es ist ziemlich umständlich so, weil man tausend neue variablen braucht, nur um den ums einen kleineren Wert einzufügen.
Kann man das beheben?
Besten Dank,
Nvidia
 
zu a) Was auch immer Du mit Löschen meinst, nenne mal ein konkretes Beispiel, warum Du damit ein Problem hast, weil mir ist noch keines aufgefallen.
zu b) Keine Ahnung was Du meinst, Deine beiden Beispiele stehen in keinem erkennbaren Zusammenhang.

Vielleicht versuchst Du es einfach nochmal und gibst ein bißchen mehr Kontext, damit Aussenstehende Dein Vorhaben / Anliegen überhaupt verstehen oder nachvollziehen können.
 
zu a)
ich vermute mal du beziehst dich hier auf foreach-schleifen, diese haben nämlich eine Besonderheit:
Das foreach-statement legt eine kopie des arrays an!
PHP:
<?php

$items = array('foo', 'bar', 'baz');

foreach($items AS $item) {
    $item = $item . '!!!';
}
# $items hat hier jetzt denselben zustand wie vor der schleife, du hast mit einer kopie gearbeitet

# um das zu umgehen gibt es 2 ansätze
# 1. Referenz
foreach($items AS &$item) { # man beachte das & vor $item
    $item = $item . '!!!'; # jetzt ist $item eine referenz auf den wert im $items array, du arbeitest nicht mehr mit einer kopie
}

# 2. Schlüssel
foreach($items AS $key => $item) {
    $items[$key] = $item . '!!!'; # man verändert das $items array direkt über den passenden schlüssel
}

?>


zu b)
das funktioniert!
PHP:
<?php

$items = array('foo', 'bar', 'baz');

$i = 1;
$items[$i + 1] = 'anders';
# überschreibt den wert mit dem schlüssel 2, also in diesem fall das "baz"

?>
 
ok war ein bisschen unpräzise zu
a) ok das ist nicht so wichtig.
b) ok vllt. liegt es auch hier dran ich krieg das nicht gepacken hier:
echo "Tree[$tree_counter] = \"$id_counter|$id_array[" . $last_folder -1 . "]|$value|#\";";
also man muss ja nicht immer ". $variable ." schreiben, dass ersetzt er auch so.
Aber aber das mit dem array tut er nicht.
 
b) ok vllt. liegt es auch hier dran ich krieg das nicht gepacken hier:
echo "Tree[$tree_counter] = \"$id_counter|$id_array[" . $last_folder -1 . "]|$value|#\";";
also man muss ja nicht immer ". $variable ." schreiben, dass ersetzt er auch so.
Aber aber das mit dem array tut er nicht.
Ich habe keine Ahnung, was Du mit dieser Zeile erreichen willst. Sieht aber auf jeden Fall merkwürdig aus.

Kannst Du Dir nicht mal 5 Minuten Zeit nehmen und Dein(e) Problem(e) so formulieren, dass es auch jemand versteht, der nicht Deinen Kenntnisstand hat? Es sei denn Du willst gar keine wirkliche Hilfe, sondern nur mal kurz Dampf ablassen.
 
echo "Tree[$tree_counter] = \"$id_counter|$id_array[" . $last_folder -1 . "]|$value|#\";";
also damit möchte ich das hier ausgeben

Tree[WERT des COUNTER] = "WERT der variable|Wert des Arrays[An der Stelle der Variable -1 ]|Wert der Variable|#|";
so soll das dann in der html datei ankommen.

also habt ihr das nun verstanden?
er nimmt das -1 einfach nicht an und kreidet mir das immer als fehler an
 
Zuletzt bearbeitet:
Sollte doch so funktionieren:
echo "Tree[".$tree_counter."] = \"".$id_counter."|".$id_array."[".($last_folder -1)."]|".$value."|#|\";";
 
geht vlt nur mir so, aber ich fände sowas wesentlich übersichtlicher:
PHP:
<?php
printf('Tree[%d] = "%d|%s|%s|#|";', $tree_counter, $id_counter, $id_array[$last_folder-1], $value);
?>
 
geht vlt nur mir so, aber ich fände sowas wesentlich übersichtlicher:

Finde ich auch übersichtlicher, aber ich wollte die Lösung nach seinem "Format" aufzeigen, damit er sieht wo der Fehler begraben war. Natürlich hätte ich auch noch dein Beispiel mit hinzuschreiben können, als Alternative, aber dabei wäre zu erwähnen, dass bei der Formatierung genau auf den Datenty (%d, %s ...) zu achten ist.
 
Zurück
Oben