Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Trzypoziomowa tablica do obsługi spisu inwentaryzacyjnego
Forum PHP.pl > Forum > Przedszkole
kolaborek
Witajcie,

Mam potrzebę zapisywania danych z pliku tekstowego o strukturze jak poniżej do tablicy. Zrobiłem już odczytywanie z pliku, ale za nic nie mogę ogarnąć trójpoziomowej tablicy w której odwzorowałbym hierarchię pliku.
Pierwszy poziom to powinna być nazwa pliku, drugi poziom to nr pomieszczenia, zaś trzeci to urządzenia znajdujące się w tym pomieszczeniu.
Wstępnie powinno to być coś takiego.
  • nazwa pliku
  • nr pomieszczenia 1
  • nr inwentarzowy_1
  • nr inwentarzowy_2
  • nr inwentarzowy_3
  • nr pomieszczenia 2
  • nr inwentarzowy_1
  • nr inwentarzowy_2

    itd.


Wymyśliłem coś takiego:
  1. $tablica = array ('nazwa_pliku.txt', array('nr_pomieszczenia_1', array ('nr_inwentarzowy1', 'nr_inwentarzowy2', 'nr_inwentarzowy3')));

Efektem jest :
Array
(
[0] => nazwa_pliku.txt

[1] => Array

(

[0] => nr_pomieszczenia_1

[1] => Array

(

[0] => nr_inwentarzowy1

[1] => nr_inwentarzowy2

[2] => nr_inwentarzowy3

)

)

)

Zanim jednak zacznę brnąć dalej, chciałbym zapytać czy jest to najlepszy sposób na tego typu zadanie? Czy też inaczej powinna ta tablica wyglądać?
Pozdawiam
Daniel
nospor
Troche kiepska ta tablica. Jak niby dodasz kolejny plik do niej?

  1. $tablica = [
  2. [
  3. 'nazwa' => 'nazwa_pliku.txt',
  4. 'pomieszczenia' => [
  5. [
  6. 'numer' => '1',
  7. 'urzadzenia' => ['urz1', 'urz2']
  8. ],
  9. [
  10. 'numer' => '2',
  11. 'urzadzenia' => ['urz3', 'urz4']
  12. ],
  13. ]
  14. ],
  15. [
  16. 'nazwa' => 'nazwa_pliku2.txt',
  17. 'pomieszczenia' => [
  18. [
  19. 'numer' => '11',
  20. 'urzadzenia' => ['urz1', 'urz2']
  21. ],
  22. [
  23. 'numer' => '22',
  24. 'urzadzenia' => ['urz3', 'urz4']
  25. ],
  26. ]
  27. ]
  28. ];


Mozna by to tez zmodyfikowac lekko i jako indeksy ustawiac nazwy plikow oraz numer pomieszczen. Ale to juz kwestia jak kto woli pisac choc czasami to mogloby byc bardziej przydatne by szybko odwolac sie do pliku. Wowczas by to wygladalo tak:
  1. $tablica = [
  2. 'nazwa_pliku1.txt' => [
  3. 'pomieszczeie1' => ['urz1', 'urz2'],
  4. 'pomieszczeie2' => ['urz3', 'urz4'],
  5. ],
  6. 'nazwa_pliku2.txt' => [
  7. 'pomieszczeie3' => ['urz1', 'urz2'],
  8. 'pomieszczeie4' => ['urz3', 'urz4'],
  9. ],
  10. ];

Jak widzisz tablica jest wizualnie mniejsza i szybciej sie poniech chodzi jak sie zna po czym sie chce isc, nei mniej jednak jest malo uniwersalna i jakbys chcial dodac dodatkowe informacje dla pliku czy pomieszczenia to juz by nie bylo tak latwo jak w przypadku wersji nr 1
kolaborek
Dzięki za odpowiedź.
@nospor - skorzystałem z Twojej podpowiedzi i utworzyłem coś takiego:
  1. $tablica = Array (
  2. "nazwa_pliku" => $_SESSION["filename"],
  3. "pomieszczenia" => Array (
  4. "nr_pomieszczenia" => NULL,
  5. "nr_inwentarzowy" => Array ()
  6. )
  7. )
  8. );

rezultat jest taki:
  1. (
  2. [0] => Array
  3. (
  4. [nazwa_pliku] => plik.txt
  5. [pomieszczenia] => Array
  6. (
  7. [nr_pomieszczenia] =>
  8. [nr_inwentarzowy] => Array
  9. (
  10. )
  11. )
  12. )
  13. )
  14.  

Tylko teraz nie potrafię w pętli dokładać do niej wartości.
Morduję się z tym drugi dzień. Próbowałem wiele sposobów i najbardziej prawidłowy wydaje mi się poniższy:
  1. $tablica [['nazwa_pliku, pomieszczenia['nr_pomieszczenia']']] = $pomieszczenie ;

Ale niestety nie działa:
Parse error: syntax error, unexpected 'nr_pomieszczenia' (T_STRING), expecting ']' in ...

Czy mógłbym prosić jeszcze tutaj o pomoc?

Neutral
  1. <?php
  2. $array = [
  3. [
  4. "name_file" => 50,
  5. "room" => [
  6. "nr_room" => NULL,
  7. "nr_invest" => []
  8. ]
  9. ]
  10. ];
  11.  
  12. echo "<pre>";
  13. print_r($array); // #1
  14. echo "</pre>";
  15.  
  16. $array[] = ["name_file" => 60, "room" => ["nr_room" => NULL, "nr_invest" => []]];
  17.  
  18. echo "<pre>";
  19. print_r($array); // #2
  20. echo "</pre>";
  21.  
  22. $array[1]["room"]["nr_room"] = 100;
  23.  
  24. echo "<pre>";
  25. print_r($array); // #3
  26. echo "</pre>";
  27. ?>


#1:

Kod
Array
(
    [0] => Array
        (
            [name_file] => 50
            [room] => Array
                (
                    [nr_room] =>
                    [nr_invest] => Array
                        (
                        )

                )

        )

)


#2:

Kod
Array
(
    [0] => Array
        (
            [name_file] => 50
            [room] => Array
                (
                    [nr_room] =>
                    [nr_invest] => Array
                        (
                        )

                )

        )

    [1] => Array
        (
            [name_file] => 60
            [room] => Array
                (
                    [nr_room] =>
                    [nr_invest] => Array
                        (
                        )

                )

        )

)


#3:

Kod
Array
(
    [0] => Array
        (
            [name_file] => 50
            [room] => Array
                (
                    [nr_room] =>
                    [nr_invest] => Array
                        (
                        )

                )

        )

    [1] => Array
        (
            [name_file] => 60
            [room] => Array
                (
                    [nr_room] => 100
                    [nr_invest] => Array
                        (
                        )

                )

        )

)
kolaborek
Panowie dziękuję Wam obydwu. Chwilę mi zeszło poukładanie tego w głowie, ale ogarnąłem temat i wygląda na to, że działa:)
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.