Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [array] z array(x, x, x) do $arr[x][x][x] = $val;
bim2
post
Post #1





Grupa: Zarejestrowani
Postów: 1 873
Pomógł: 152
Dołączył: 9.04.2006
Skąd: Berlin

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


Z tablicy:
Cytat
Array ( [0] => imie [1] => pierwsze [2] => hehe )

potrzebuje zrobić:
  1. <?php
  2. (
  3.  [imie] => Array
  4. (
  5.  [pierwsze] => Array
  6. (
  7.  [hehe] => 'cos'
  8.  
  9. )
  10.  
  11. )
  12.  
  13. )
  14. ?>

Nie mogę sobie poradzić. Kod jaki mam nie nadaje się do pokazania, no ale cóż:
  1. <?php
  2. $sData = '';
  3. foreach($aArr as $iKey => $sParameter)
  4. {
  5. $sData .= '[''.$sParameter.'']';
  6. }
  7.  
  8. eval('$this->aData'.$sData.'[''.$sWhat.''] = ''.$sOn.'';');
  9. ?>

Czysto teoretycznie to działa, ale nie chce używać evala. Czuje, że da się zrobić to prościej, ale coś dziś przymróżony jestem. ;/

EDIT: Poprawiłem wcięcia tylko, nic nie zmieniałem. Więc nie ma co :|

Ten post edytował bim2 1.03.2008, 20:09:07
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 7)
Grzyw
post
Post #2





Grupa: Zarejestrowani
Postów: 561
Pomógł: 75
Dołączył: 19.08.2004
Skąd: Wrocław

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


  1. <?php
  2. $array = array('pierwsze','drugie','hehe');
  3.  
  4. foreach ($array as $key => $element)
  5. {
  6. $newArray[$element] = array();
  7. }
  8. ?>

No i możesz wsadzać co chcesz do nowej tablicy.
Go to the top of the page
+Quote Post
bim2
post
Post #3





Grupa: Zarejestrowani
Postów: 1 873
Pomógł: 152
Dołączył: 9.04.2006
Skąd: Berlin

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


jak coś dajesz to sprawdź, to wywala:
Cytat
Array
(
[pierwsze] => Array
(
)

[drugie] => Array
(
)

[hehe] => Array
(
)

)
a nei to o co mi chodziło w 1 poście.
Go to the top of the page
+Quote Post
Grzyw
post
Post #4





Grupa: Zarejestrowani
Postów: 561
Pomógł: 75
Dołączył: 19.08.2004
Skąd: Wrocław

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


No, jak będziesz pierwszy post edytował, to nie ma co....
Go to the top of the page
+Quote Post
bim2
post
Post #5





Grupa: Zarejestrowani
Postów: 1 873
Pomógł: 152
Dołączył: 9.04.2006
Skąd: Berlin

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


Ehhh... było się przyjrzeć. Wcięcia się nie dały i tyle. Jakbyś jakimś edytorkiem zaznaczył ( to byś się domyślił, ale poczęści to moja wina, że nie sformatowałem tego porządnie.

Ma ktoś jakieś pomysły?
Go to the top of the page
+Quote Post
nevt
post
Post #6





Grupa: Przyjaciele php.pl
Postów: 1 595
Pomógł: 282
Dołączył: 24.09.2007
Skąd: Reda, Pomorskie.

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


ja nie eval() to może rekurencyjnie?
  1. <?php
  2. function newArray($x, $pos = 0)
  3. {
  4. if($pos + 1 == count($x))
  5. return $x[$pos];
  6. else
  7. return array($x[$pos] => newArray($x, $pos + 1));
  8. }
  9.  
  10. $x = array('imie', 'pierwsze', 'hehe', 'cos' );
  11. print_r($x);
  12.  
  13. $x = newArray($x);
  14. print_r($x);
  15. ?>


Ten post edytował nevt 1.03.2008, 21:03:56
Go to the top of the page
+Quote Post
bim2
post
Post #7





Grupa: Zarejestrowani
Postów: 1 873
Pomógł: 152
Dołączył: 9.04.2006
Skąd: Berlin

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


Prawie pomogłes, bo własnie kumpel mi pokazał jak bez rekurencji:
  1. <?php
  2. $arr = array( "imie", "nazwisko", "el1", "el2" );
  3. $out = array();
  4. $to =& $out;
  5. $count = count($arr)-1;
  6. foreach($arr as $i => $val) {
  7. $to[$val] = ($count==$i)?array('huehue'):array();
  8. $to =& $to[$val];
  9. }
  10. print_r($out);
  11. ?>

ale rozwiązałes (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif) Dzięki.
Go to the top of the page
+Quote Post
em1X
post
Post #8





Grupa: Zarejestrowani
Postów: 984
Pomógł: 41
Dołączył: 16.03.2002
Skąd: Płock

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


Zadziała na dowolnej głębokości tablicy:

  1. <?php
  2. function & convert($array, $value)
  3. {
  4. $new = array();
  5.  
  6. for ($i=0; $i
  7. {
  8. $data = each($array);
  9. $klucz = $data[1];
  10.  
  11. if ($i == 0)
  12. {
  13. $new[$klucz] = array();
  14. $next =& $new[$klucz];
  15. }
  16. else
  17. {
  18. if ($i == count($array) - 1)
  19. {
  20. $next[$klucz] = $value;
  21. return $new;
  22. }
  23. else
  24. {
  25. $next[$klucz] = array();
  26. $next =& $next[$klucz];
  27. }
  28. }
  29. }
  30. }
  31. ?>


przykład:
  1. <?php
  2. $array = array("imie", "pierwsze", "hehe");
  3. $new = convert($array, 'cos');
  4.  
  5. print "<pre>";
  6. print_r($new);
  7. ?>


wynik:
Kod
Array
(
    [imie] => Array
        (
            [pierwsze] => Array
                (
                    [hehe] => value
                )
        )
)


Ten post edytował em1X 1.03.2008, 21:11:22
Go to the top of the page
+Quote Post

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: 23.08.2025 - 21:02