Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Funkcja tworząca tablicę z określoną wartością.
Forum PHP.pl > Forum > Przedszkole
Mike122
Witam
  1. //Funkcja która przyjmuje 2 argumenty 1 argument struktura tablicy, 2 wartość tablicy.
  2. function arr($base, $str){
  3. $base = explode(';', $base);
  4. foreach($base as $id => $val){
  5. $out[$base[$id]] = $out;
  6. }
  7. $out = $str;
  8. return $out;
  9. }
  10. //Przykładowo wprowadzę wartości grupa;tech;poziom oraz 100 następnie wywołam funkcję:
  11. print_r(arr('grupa;tech;poziom', 100));
  12. //wynikiem tego powinna być tablica:
  13. (
  14. [grupa] => Array
  15. (
  16. [tech] => Array
  17. (
  18. [poziom] => 100
  19. )
  20.  
  21. )
  22.  
  23. )

Niestety funkcja nie zwraca tak tej wartości proszę o pomoc oczywiście w 1 argumencie może być różna ilość ; np. teraz podałem 'grupa;tech;poziom' ale możne być czasem 'grupa' a czasem 'pod_grupa;tech;poziom;pod_poziom' itd.
desperat666
Z serii "napisałbym to tak"
  1. <?php
  2. function arr($base,$str) {
  3. $tablica = Array();
  4. $tmp = Array();
  5. // rozkoduj strukture
  6. $x = explode(";", $base);
  7. //ostatni klucz przyjmuje wartosc $str,
  8. $wartosc = array_pop($x);
  9. $tmp[$wartosc] = $str;
  10. // w tym przypadku jest to Array (c2h5oh=>100)
  11. while (count($x)!=0) {
  12. $next = Array();
  13. $klucz = array_pop($x);
  14. $next[$klucz] = $tmp;
  15. $tmp = $next;
  16. array_push($tablica,$tmp);
  17. }
  18. // kazdy kolejny klucz w $tablicy jest tu elementem tworzenia struktury, ostatni klucz to tablica o którą chodziło.
  19. return array_pop($tablica);
  20. }
  21.  
  22. print_r(arr("blada;dupa;misiu;c2h5oh", "100"));
  23.  
  24. ?>

Array ( [blada] => Array ( [dupa] => Array ( [misiu] => Array ( [c2h5oh] => 100 ) ) ) )
Mam nadzieję że pomogłem i naprowadziłem
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.