Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]przepisanie stringu na tablicę
mdx
post 23.09.2008, 15:08:05
Post #1





Grupa: Zarejestrowani
Postów: 27
Pomógł: 0
Dołączył: 7.03.2003
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


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.


--------------------
MDX.PL
Go to the top of the page
+Quote Post
sowiq
post 23.09.2008, 15:13:43
Post #2





Grupa: Zarejestrowani
Postów: 1 890
Pomógł: 339
Dołączył: 14.12.2006
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


  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?

Ten post edytował sowiq 23.09.2008, 15:16:03
Go to the top of the page
+Quote Post
mdx
post 23.09.2008, 15:24:20
Post #3





Grupa: Zarejestrowani
Postów: 27
Pomógł: 0
Dołączył: 7.03.2003
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


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.

Ten post edytował mdx 23.09.2008, 15:27:18


--------------------
MDX.PL
Go to the top of the page
+Quote Post
sowiq
post 23.09.2008, 15:28:52
Post #4





Grupa: Zarejestrowani
Postów: 1 890
Pomógł: 339
Dołączył: 14.12.2006
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


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).

Ten post edytował sowiq 23.09.2008, 15:31:45
Go to the top of the page
+Quote Post
mdx
post 23.09.2008, 15:54:29
Post #5





Grupa: Zarejestrowani
Postów: 27
Pomógł: 0
Dołączył: 7.03.2003
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


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ę!


--------------------
MDX.PL
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 15.06.2025 - 23:24