Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Wypełnianie tabeli(matrycy)
adgad
post
Post #1





Grupa: Zarejestrowani
Postów: 74
Pomógł: 0
Dołączył: 14.04.2010

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


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ę.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
kreatiff
post
Post #2





Grupa: Zarejestrowani
Postów: 324
Pomógł: 105
Dołączył: 7.08.2012

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


  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.

Ten post edytował kreatiff 24.01.2014, 20:16:08
Go to the top of the page
+Quote Post
adgad
post
Post #3





Grupa: Zarejestrowani
Postów: 74
Pomógł: 0
Dołączył: 14.04.2010

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


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 (IMG:style_emoticons/default/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ł (IMG:style_emoticons/default/smile.gif)
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: 4.10.2025 - 21:21