Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Trzypoziomowa tablica do obsługi spisu inwentaryzacyjnego
kolaborek
post 9.01.2019, 21:07:42
Post #1





Grupa: Zarejestrowani
Postów: 37
Pomógł: 0
Dołączył: 12.10.2010

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


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
Go to the top of the page
+Quote Post
nospor
post 10.01.2019, 10:19:14
Post #2





Grupa: Moderatorzy
Postów: 34 409
Pomógł: 5703
Dołączył: 27.12.2004




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


--------------------

Najlepsze kawałki programistyczne || Dowcipy o informatykach || Forum PHP dla opornych
Klasy: Pager (stronicowanie) | Cache | ShoutBox (Chat) | Widok | Ładne url'e

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
kolaborek
post 12.01.2019, 22:31:13
Post #3





Grupa: Zarejestrowani
Postów: 37
Pomógł: 0
Dołączył: 12.10.2010

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


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?

Go to the top of the page
+Quote Post
Neutral
post 13.01.2019, 01:00:19
Post #4





Grupa: Zarejestrowani
Postów: 203
Pomógł: 29
Dołączył: 10.01.2016

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


  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
                        (
                        )

                )

        )

)


Ten post edytował Neutral 13.01.2019, 01:15:53
Go to the top of the page
+Quote Post
kolaborek
post 22.01.2019, 12:03:03
Post #5





Grupa: Zarejestrowani
Postów: 37
Pomógł: 0
Dołączył: 12.10.2010

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


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:)
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 18.03.2019 - 17:38