Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]przepisanie stringu na tablicę
Forum PHP.pl > Forum > PHP
mdx
Witam, nie mogę wykombinować jak optymalnie przepisać ciąg:

  1. <?php
  2. $str = 'a-1-b-2-c-3-d-4';
  3. ?>


na tablicę:

  1. <?php
  2. $array = array('a' => 1, 'b' => 2, 'c' => 3, 'd' => 4);
  3. ?>


Pomocna dłoń będzie bardzo pomocna smile.gif
Dzięki.
sowiq
  1. <?php
  2. $tab = explode("-", $str);
  3. $ile = count($tab);
  4. for($i = 0; $i < $ile; ++$i)
  5.    $array[$tab[$i]] = $tab[++ $i];
  6. ?>


Może tak?
mdx
Podałem głupi przykład, przepraszam. Tam mogą być inne wartości niż 1,2,3.
Wymyśliłem:

  1. <?php
  2. $str = 'a-1-b-2-c-3-d-4';
  3.            $steps = split('-',$str) ;
  4.            
  5.            foreach ($steps as $key => $step){
  6.    
  7.                //jesli nie jest parzysta jest nazwą parametru
  8.                if ($key&1){
  9.                    
  10.                    $names[] = $step[0];
  11.                    
  12.                //jesli jest parzysta jest wartością parametru
  13.                } else{
  14.                    
  15.                    $values[] = $step;
  16.                    
  17.                }
  18.                
  19.            }
  20.            
  21.            $params = array_combine($values, $names);
  22. ?>


Kod
Array
(
    [a] => 1
    [b] => 2
    [c] => 3
    [d] => 4
)


ale jakoś nie bardzo podoba mi się to rozwiązanie.
sowiq
A sprawdziłeś chociaż to, co Ci napisałem? blinksmiley.gif Albo przynajmniej przeczytałeś, żeby zobaczyć jak to działa? blinksmiley.gif

ps. Nie używaj split() do dzielenia wg. jednego znaku. Do tego służy explode(). Split dzieli po wyrażeniach regularnych, więc może być wolniejszy (piszę 'może', bo nie jestem pewien, ale jest to dla mnie najbardziej prawdopodobne).
mdx
Cytat(sowiq @ 23.09.2008, 16:28:52 ) *
A sprawdziłeś chociaż to, co Ci napisałem? blinksmiley.gif Albo przynajmniej przeczytałeś, żeby zobaczyć jak to działa? blinksmiley.gif

ps. Nie używaj split() do dzielenia wg. jednego znaku. Do tego służy explode(). Split dzieli po wyrażeniach regularnych, więc może być wolniejszy (piszę 'może', bo nie jestem pewien, ale jest to dla mnie najbardziej prawdopodobne).

Jestem głupi, dziękuję!
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.