Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
foreach --> set variable ... [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr
ebiz-webhosting
- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
foreach --> set variable ...


 
Willy_Lernen
22-11-2004, 22:03 
 
Hallo Freunde der nacht,

hab da mal ne blöde newbie-frage:
kann man in PHP nicht existierende Variablen automatisch erstellen lassen, wo der Name sich aus dem content eines Arrays per foreach über geben lässt? Wenn nicht muss ich mich übergeben ... :)

z.B.:

<?php
session_start();

$_SESSION['nav'] = file ("nav.txt"); //enthält die menuepunkte
foreach ($_SESSION['nav'] as $_SESSION['cms']) {
...


};
};
?>


Vielen Dank im Vorraus, Ich versuche weiterhin was zu finden.
WL

 
mrhappiness
22-11-2004, 22:05 
 
schlimm wenn ich dir grad nicht so ganz folgen kann?

du könntest nach variablen variablen suchen oder einfach mal beschreiben was du machen willst

 
penizillin
22-11-2004, 22:06 
 
generell kannst du variablennamen so erstellen:
$varName = "myVar";
$$varName = "hello world";

echo $myVar; //müsste "hello world" ausgeben

bringt dich das weiter?

 
jahlives
22-11-2004, 22:11 
 
$$varName = "hello world";
echo $myVar; //müsste "hello world" ausgeben


Wenn das hello world gibt, dann stimmt was mit deinem PHP nicht ($$) ;) ;)

Gruss

tobi

 
penizillin
22-11-2004, 22:13 
 
ausprobiert?

 
jahlives
22-11-2004, 22:30 
 
Salut

man lernt eben nie aus...

Gruss

tobi

 
Willy_Lernen
22-11-2004, 23:36 
 
hm, ich meinte eher "on the fly",

also wenn in meinem obigen beispiel in der text datei:

news
about
impressum

stünde, dass NUR dann drei variablen geschrieben würden namens $news, $about, $ impressum.

Wohl gemerkt wissen wir beim programmieren des scripts noch nicht, dass dies der inhalt der txt datei ist, also können wir die variablen nicht festlegen sondern sie müssten sich aus der abfrage und der foreach ergeben ..

hab ich es jetzt besser erklärt? sorry für die unklare frage und danke für den versuch mir zu helfen ...


Lieben Gruß WL

 
penizillin
22-11-2004, 23:47 
 
die frage war schon ok formuliert.

wenn du die zeilen aus der datei auslesen kannst, wo ist das problem, sie so, wie ich es mit myVar vorgeführt habe, zu erstellen?

an die anderen: gibts für "variablen erstellen" eigentlich einen fachbegriff? kann man hier auch "deklarieren" sagen? denke schon.

 
Willy_Lernen
23-11-2004, 00:12 
 
ne funzt leider nicht weil in bei deinem Ansatz würde bei:


<?php
session_start();

$_SESSION['nav'] = file ("nav.txt"); //enthält news,about, impressum
foreach ($_SESSION['nav'] as $_SESSION['cms']) {
$varName .= $_SESSION['cms'];
$$varName .= $_SESSION['cms'] . ".txt";
echo $$varName;
};
?>


würde "news about impressum.txt" heraus kommen und nicht wie ich wollte
"news.txt
about.txt
impressum.txt"

also dass drei variablen gegründet werden wenn drei Zeilen im Array aus dem Text File vorhanden sind ...

*kopf kratz* - oder bin ich einfach zu müde um den wald vor lauter bäumen nich zu sehen ??? - ohne punkt vor = dasselbe ...

Lieben Gruß, WL

 
penizillin
23-11-2004, 00:39 
 
zeilenumbrüche? die gibts auf dem flohmarkt.

 
Willy_Lernen
23-11-2004, 06:28 
 
RRrrrRRRRRR **** Zeilenumbrüche??????? War wohl schon spät, wat? Also wegen nem "n" oder "br" werd ich hier wohl kaum posten!!!!

Also nochmal: Es besteht für jeden halbwegs nüchteren Menschen ein Unterschied zwischen 123.tx und 1.txt, 2.txt und 3.txt - jetzt verstanden ????

Gruß, WL

 
mrhappiness
23-11-2004, 08:05 
 
Immer schön ruhig bleiben$_SESSION['nav'] = array('news', 'about', 'impressum');
foreach ($_SESSION['nav'] as $_SESSION['cms']) {
$varName .= $_SESSION['cms'];
$$varName .= $_SESSION['cms'] . ".txt";
echo $$varName;
}; das entspricht doch deinem Beispiel oder?

bei mir kommt als ausgabenews.txtabout.txtimpressum.txtund mit einem zeilenumbruch$_SESSION['nav'] = array('news', 'about', 'impressum');
foreach ($_SESSION['nav'] as $_SESSION['cms']) {
$varName .= $_SESSION['cms'];
$$varName .= $_SESSION['cms'] . ".txt";
echo $$varName.'<br />';
}; kommt das raus:news.txt
about.txt
impressum.txtwenn bei dir was anderes steht, dann machst du was falsch oder die datei ist schlecht

 
Willy_Lernen
23-11-2004, 08:22 
 
ja isset denn ?! ...

Original geschrieben von mrhappiness
Immer schön ruhig bleiben$_SESSION['nav'] = array('news', 'about', 'impressum');
foreach ($_SESSION['nav'] as $_SESSION['cms']) {
$varName .= $_SESSION['cms'];
$$varName .= $_SESSION['cms'] . ".txt";
echo $$varName;
}; das entspricht doch deinem Beispiel oder?

bei mir kommt als ausgabenews.txtabout.txtimpressum.txtund mit einem zeilenumbruch$_SESSION['nav'] = array('news', 'about', 'impressum');
foreach ($_SESSION['nav'] as $_SESSION['cms']) {
$varName .= $_SESSION['cms'];
$$varName .= $_SESSION['cms'] . ".txt";
echo $$varName.'<br />';
}; kommt das raus:news.txt
about.txt
impressum.txtwenn bei dir was anderes steht, dann machst du was falsch oder die datei ist schlecht

ok, ok, ok ich bin ganz ruhig :) *tief luft hol* - um den zeilenumbruch gehts nicht, den kenn' ich grad noch so :) is mir in den letzten Jahren schon mal unter gekommen *lol* - Mir gings um das beisielhafte Ergebnis zur Beweisführung darüber dass sich wirklich Variablen "on the fly" selbst deklariert haben. Wie man sehen kann, hast du ein fertig deklariertes (starres) array benutzt und ich ein array über " = file (blabla.txt)" geladen, welches sich (logischer Weise war das der Sinn der Sache) durch den Inhalt von blabla.txt definiert. Also, um mir jetzt mal meine letzte Frage selbst zu beantworten, seh ich den Wald wohl eher vor lauter "arrays" nicht mehr, und mein array über " = file (blabla.txt)" funktioniert so nicht, wenn dein Beispiel, wie du sagtest, wohl richtig funktioniert. Also liegt im array definieren mein Fehler und da muss ich anfangen zu suchen...


Ich möchte mich bei penizillin für den Tip mit $$ bedanken
bei mrhappiness für sein Beispiel was mir aufzeigte wo mein Fehler liegt,
und mir für den Versuch das alles richtig zu verstehen :)))

Liebe Grüße, WL

 
asp2php
23-11-2004, 09:02 
 
Original geschrieben von jahlives

man lernt eben nie aus...

vor allem, wenn man sich nicht die Mühe gibt, das Manual richtig durchzulesen


Alle Zeitangaben in WEZ +2. Es ist jetzt 18:22 Uhr.