Avatar billede henrywood Nybegynder
02. oktober 2002 - 11:16 Der er 4 kommentarer og
1 løsning

"Dynamisk" oprettelse af arrays ud fra en tilfældig parameter

Hejsa !

Jeg har denne lille stump kode, der viser en form og giver mulighed for at indtaste en querystring og det indtastede i parameterfeltet skal så gøres tilgængeligt i form af variabler og arrays.
Koden virker fint til almindelige variabler. Skriver man f.eks i params:
parameter1=henrik+skov&parameter2=1 oprettes de to variabler parameter1 og parameter2

Men: Hvis man skriver (i paramsfeltet)
parameters[]=henrik+skov&parameters[]=1 eller evt uden [] (da man vil have de angivne værdier ind i et array  parameters som koden herunder dynamisk skal oprette, hvad skal der laves i koden således at dette array kan udskrives med f.eks foreach ??


Kode:
<?
if (isset($params))
{
  //params=dd=1&ee=66
  $params = urldecode($params);
  $parampairs = explode("&",$params);
  foreach ($parampairs as $aparam)
  {
    list ($par, $value) = split ("=", $aparam);
 
    $$par = $value;
   
       
  echo "$par: $value<br>";
  }
}
$params_encoded = str_replace(" ","+",$params);

/*
foreach ($pages as $page)
{
echo "page ".$more." ".$page."<br>";
$more++;
}
*/

?>

<HTML>

<body>
<form name="theform" action="<?=$PHP_SELF?>" method="post">
<input type="text" name="params" value="<?=$params_encoded?>">
<input type="submit" value="Send">
</form>
</body>
</html>
Avatar billede jakoba Nybegynder
02. oktober 2002 - 11:26 #1
din foreach loop foroven
  foreach ($parampairs as $aparam)
  {
    list ($par, $value) = split ("=", $aparam);
    $$par = $value;
    echo "$par: $value<br>";
  }
skal ændres til:
  foreach ($parampairs as $aparam)
  {
    list ($par, $value) = split ("=", $aparam);
    if ( substr( $par, -2 ) == "[]" ) {  // der er et svinsk array-element
        ${substr($par,0,-2 )}[] = $value;
    } else { // normal parameter
        $$par = $value;
    }
    echo "$par: $value<br>";
  }

mvh JakobA
Avatar billede henrywood Nybegynder
02. oktober 2002 - 11:54 #2
Takker, men hvad vis man ikke indtaster [] efter arraynavnet i paramsfeltet, men blot
parameters=dddd&parameters=eeee ???
Du får pointsne nu pga. hurtigt svar
Avatar billede jakoba Nybegynder
02. oktober 2002 - 12:13 #3
så bliver den samme parameter overskrevet igen og igen, og du ender med at have en enkelt $parameters variabel der indeholder 'eeee'
Avatar billede henrywood Nybegynder
02. oktober 2002 - 14:42 #4
Ja, det ved jeg, men tænkte at man kunne undgå det, men PHP kræver vist at parameterens navn er xxx[] hvis den skal behandles som array eller hvad ??
Avatar billede jakoba Nybegynder
02. oktober 2002 - 14:45 #5
php kræver det også ja.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester