WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   Bygga php-variabler från array? (https://www.wn.se/forum/showthread.php?t=1045178)

youheardit 2010-12-02 18:27

Bygga php-variabler från array?
 
Tjenixen!

Har en liten fråga jag suttit och funderat på under de tider jag programmerat lite PHP.

Kan man skapa variabler från en array? Säg att jag har en fil som hämtar ca info från 10st $_GET requests.

Ex:
PHP-kod:


$gets 
= array("name","address","city","zip","region");

foreach(
$gets as $newvar){
     ${
$newvar} = $_GET["'".$newvar."'"];
}

echo 
$name//ekar ut det som fanns i $_GET['name']; ex: Philip
echo $address;
osv osv osv..... 

Jag har testat något liknande förr, men fick en massa error och gav upp direkt eftersom jag inte kunde tolka felen.

EDIT: Körde koden som jag skrev i exemplet, men ingenting skrevs ut. Och när jag satte igång E_NOTICE så fick jag:
Citat:

Notice: Undefined index: 'name' in /var/www/test.php on line 7
för varje variabel...

EDIT 2: Tog bort citattecknen i $_GET så det istället blev $_GET[$newvar], det fungerade, men hur gör jag med siffror? för det kommer ju inte funka...

tacksam för svar!

Med vänliga hälsningar, Philip Andersson!

Jimpsson 2010-12-02 18:47

http://se.php.net/extract

youheardit 2010-12-02 19:01

Citat:

Ursprungligen postat av Jimpsson (Inlägg 20381010)

tack, men....

Citat:

Do not use extract() on untrusted data, like user input (i.e. $_GET, $_FILES, etc.).

Magnus_A 2010-12-02 19:06

Citat:

Ursprungligen postat av Jimpsson (Inlägg 20381010)

Kör inte extract() på $_GET bara....

annars kan du titta på import_request_variables().

tartareandesire 2010-12-02 19:07

Ta bort citattecken så fungerar det bättre. Vad menar du med att siffror inte kommer att fungera? De har du ju förmodligen som värden på variablerna och inte som variabelnamn?

youheardit 2010-12-02 19:33

Citat:

Ursprungligen postat av tartareandesire (Inlägg 20381020)
Ta bort citattecken så fungerar det bättre. Vad menar du med att siffror inte kommer att fungera? De har du ju förmodligen som värden på variablerna och inte som variabelnamn?

Ja, det funkar inte på siffror för det är ju en array, och om jag hämtar $_GET[3] så tar den ju value från "city" och inte själva "3" som jag vill ha.

Men en lösning kan vara att jag gör om allt till strings från ints.

tartareandesire 2010-12-02 20:03

Citat:

Ursprungligen postat av youheardit (Inlägg 20381033)
Ja, det funkar inte på siffror för det är ju en array, och om jag hämtar $_GET[3] så tar den ju value från "city" och inte själva "3" som jag vill ha.

Men en lösning kan vara att jag gör om allt till strings från ints.

Du blandar nog ihop värden och namn nu. Du vill ju inte ha en variabel som heter '3'? Variabelnamnen har du ju i $gets. Det har sedan ingen som helst betydelse om det är siffror eller bokstäver i dina get-variablers värden.

Har du blabla.php?name=3 så kommer du få en variabel som heter name med värdet 3 vilket väl är vad du vill ha? Eller så missuppfattar jag något :)

youheardit 2010-12-02 22:38

Citat:

Ursprungligen postat av tartareandesire (Inlägg 20381044)
Du blandar nog ihop värden och namn nu. Du vill ju inte ha en variabel som heter '3'? Variabelnamnen har du ju i $gets. Det har sedan ingen som helst betydelse om det är siffror eller bokstäver i dina get-variablers värden.

Har du blabla.php?name=3 så kommer du få en variabel som heter name med värdet 3 vilket väl är vad du vill ha? Eller så missuppfattar jag något :)

Jo, såg nu jag snurrat upp det lite. Men menar om jag vill ha blabla.php?45=hej.

dvs. omvänt....

tartareandesire 2010-12-03 00:13

Citat:

Ursprungligen postat av youheardit (Inlägg 20381104)
Jo, såg nu jag snurrat upp det lite. Men menar om jag vill ha blabla.php?45=hej.

dvs. omvänt....

En variabel kan inte börja med en siffra. Varför vill du göra detta?

youheardit 2010-12-03 00:17

Citat:

Ursprungligen postat av tartareandesire (Inlägg 20381116)
En variabel kan inte börja med en siffra. Varför vill du göra detta?

underbart... jag har gjort bort mig fullständigt! HAHA! självklart att inte man kan börja med en siffra i en variabel.

Förlåt, har snurrat rejält nu, men iaf, tack, problemet är löst!

pinsamt detta... =(


Alla tider är GMT +2. Klockan är nu 14:31.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson