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
stroju
post
Post #2





Grupa: Zarejestrowani
Postów: 179
Pomógł: 2
Dołączył: 17.11.2005

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


  1. function tabtostr($array, $prefix = '')
  2. {
  3. $keys = array_keys($array);
  4. $key1 = array();
  5. foreach($keys as $i => $val)
  6. {
  7.  
  8.  
  9.  
  10. if(is_array($array[$val]))
  11. {
  12.  
  13. $nkey = tabtostr($array[$val], $val.":");
  14. $key1[] = $prefix.$nkey;
  15. }
  16. else
  17. {
  18. $key1[] = $prefix.$val."=".$array[$val];
  19.  
  20. }
  21.  
  22.  
  23. }
  24. return join("\n",$key1);
  25.  
  26. }


działa ok, ale gdy w którym momencie tablica ma więcej niż jeden element to zanika mi prefix, wiem że to nie trudne aby to zrobić ale nie mogę coś na to wpaść..

przy takiej tablicy to co napisałem gubi prefiksy, no bo jak ma nie gubić skoro nie za bardzo jest jak przekazać je wewnętrznym elementom..

  1. $klucze = array(
  2. 'auta' => array(
  3. 'niemieckie' => array(
  4. 'bmw' => array(
  5. 1 => 'm5',
  6. 2 => 'm3',
  7. 3 => 'z3',
  8. ),
  9. 'mercedes' => array(
  10. 1 => 's class',
  11. 2 => 'c klass'
  12. )
  13. ),
  14. 'wloskie' => array(
  15. 'pagani' => 'zonda'
  16. ),
  17. 'francuskie' => array(
  18. 'renault' => 'megane',
  19. 'peugeot' => '206'
  20. )
  21. )
  22. );


pierwszy element jest ok, każdy kolejny gubi wszystko to co było przed nim..

oto efekt:
Kod
auta:niemieckie:bmw:1=m5
bmw:2=m3
bmw:3=z3
niemieckie:mercedes:1=s class
mercedes:2=c klass
auta:wloskie:pagani=zonda
auta:francuskie:renault=megane
francuskie:peugeot=206


Ten post edytował stroju 15.08.2012, 21:56:25
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: 10.10.2025 - 01:33