Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Wypełnianie tabeli(matrycy)
Forum PHP.pl > Forum > Przedszkole
adgad
Witam
Męczę się z jednym problemem. Mam np.
Kod
Array
(
    [2] => Array
        (
            [5] => Array
                (
                    [nazwa_pola] => wartosc
                )
            [15] => Array
                (
                    [nazwa_pola] => wartosc
                )
       )
    [4] => Array
        (
            [7] => Array
                (
                    [nazwa_pola] => wartosc
                )
            [51] => Array
                (
                    [nazwa_pola] => wartosc
                )
       )
)

Teraz chciałbym wypełnić tą tablice w taki sposób:
1. jeśli nie istnieje indeks x to wypełnij np. spacjami
Czyli będzie 0
Kod
Array
(
    [0] => Array
        (
            [0] => spacja
            [1] => spacja
//itd.
       )
    [1] => Array
        (
            [0] => spacja
            [1] => spacja
//itd.
       )
)


Tu sprawa wygląda prosto. Jednak w przypadku gdy istnieje indeks x chce to inaczej wypelnić. Mianowicie wypelniam do istniejącego indeksu y, następnie zliczam długość ciągu dla istniejącej wartosci y i nastepne wypelnianie powinno być od y+dlugość ciągu. Obrazując:
Kod
Array
(
    [2] => Array
        (
            [0] => spacja
            [1] => spacja
            [2] => spacja
            [4] => spacja
            [5] => Array
                (
                    [nazwa_pola] => wartosc // dlugość tej wartosci jest tu istotna. w tym przypadku wynosi ona 7 wiec nastepny wypelniany indeks y to 5 + 7więc:
                )
            [12] => spacja
            [13] => spacja
            [14] => spacja
            [15] => Array
                (
                    [nazwa_pola] => wartosc// i znowu zliczamy dlugość wartosci tego indesku, ponownie jest to 7 więc kolejny indeks y to 22
                )
            [22] => spacja
            [23] => spacja
//itd.
       )
)

Problem w tym że moje próby nie są zbytnio udane. Nie mogę sobie poradzić z tym ostatnim warunkiem ;/ Proszę zatem o jakąś radę, przykład(pseudokod) czy nawet schemat krokowy jak to uzupełnić. Z góry dziękuję.
kreatiff
  1. foreach( $tab as &$wartosc ) {
  2. end($wartosc);
  3. $ostatni = key($wartosc);
  4. reset($wartosc);
  5. $i = 0;
  6. while ( $i < $ostatni ) {
  7. if ( ! isset($wartosc[$i]) ) {
  8. $wartosc[$i] = ' ';
  9. $i++;
  10. }
  11. else {
  12. $dlugosc = strlen(reset($wartosc[$i]));
  13. $i += $dlugosc;
  14. }
  15. }
  16. }
  17. unset($wartosc);
  18. foreach( $tab as &$wartosc ) ksort($wartosc); unset($wartosc);
  19. echo'<pre>',print_r($tab),'</pre>';


Nie wiem co ma się dalej robić po natrafieniu na ostatni element danej "podtablicy", więc nie robi się nic. Ale przerobienie pętelki while to nie problem. Robione na szybko i nie testowałem jakoś szczególnie. Założenia z podaną tablicą spełnia.

Tak na przyszłość, jak dajesz tablicę to podaj ją w formie, którą po wklejeniu w kod od razu można uzywać w php. Kopia zrzutu tejże, się do takiego wklejenia nie nadaje.
adgad
Dziękuję za odpowiedź.
Odnośnie sposobu wklejania kodu - ok, będę pamiętał na przyszłość.
Co do samego problemu to cały czas szedłem w złym kierunku - chciałem dodawać puste pola w odpowiedniej ilości. Później poszedłem po rozum do głowy i tak jak Ty wypełniłem tablice odpowiednimi danymi i usunąłem co niepotrzebne. Twój kod utwierdził mnie w przekonaniu że dobrze zrobiłem smile.gif A tablica po znalezieniu ostatniego elementu powinna być uzupelniana do określonej wartości, np. 100.
Dzięki więc za pomoc i kod! Oczywiście leci pomógł smile.gif
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.