Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> zamiana string na tablicę wielowymiarową
radziopoke
post
Post #1





Grupa: Zarejestrowani
Postów: 125
Pomógł: 14
Dołączył: 2.06.2010

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


Posiadam taki ciąg znaków
Np.
  1. a:1;b:2;c:a:3;c:b:4;d:a:a:5;d:a:b:6;d:a:c:7;d:b:a:8;d:b:b:9;d:b:c:10;d:c:11;d:d:12;e:a:13;e:b:14;

I musiałbym zamienić go na tablicę wielowymiarową
  1. $t['a']=1;
  2. $t['b']=2;
  3. $t['c']['a']=3;
  4. $t['c']['b']=4;
  5. $t['d']['a']['a']=5;
  6. $t['d']['a']['b']=6;
  7. $t['d']['a']['c']=7;
  8. $t['d']['b']['a']=8;
  9. $t['d']['b']['b']=9;
  10. $t['d']['b']['c']=10;
  11. $t['d']['c']=11;
  12. $t['d']['d']=12;
  13. $t['e']['a']=13;
  14. $t['e']['b']=14;

Chodzi o to, że pobieramy cześć ciągu do średnika np a:1;
Zamieniamy na element tablicy $t['a']=1
A w przypadku kawałka ciągu d:a:a:5; powinno stworzyć element tablicy $t['d']['a']['a']=5
I w taki sposób stworzyć tą tablicę. Główkuje już ze 2 godziny ale chwilowo nic zensownego nie wymyśliłem.
Ciągi mogą być różne ale zawsze elementy rozdzielone są średnikami

Jest w stanie ktoś pomóc lub ma jakiś pomysł jak to zrobić?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Crozin
post
Post #2





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


Trochę przekombinowane, ale byłeś blisko:
  1. <?php
  2.  
  3. function tabToString($data, $prefix = '') {
  4. $result = array();
  5.  
  6. foreach ($data as $key => $value) {
  7. if (is_array($value)) {
  8. $t = tabToString($value, $prefix . $key . ':');
  9. $result = array_merge($result, $t);
  10. } else {
  11. $result[$prefix . $key] = $value;
  12. }
  13. }
  14.  
  15. return $result;
  16. }
Myślę, że różnice w kodzie i wyniku działania funkcji sobie samodzielnie przeanalzujesz.
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 17.10.2025 - 17:35