Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Tablice
Forum PHP.pl > Forum > Przedszkole
hopaj
Witam,
Potrzebuje pomocy w temacie tablic prawdopodobnie.
Mam w osobnym pliku z mienna ktora "trzyma" tablice z zawsze piecioma wartosciami. Te wartosci sa aktualizowane wiec nie sa one zawsze takie same ale dajmy na to ze dla przykladu bedzie to:

  1. $p = array('Tomek Domek' => '25' , 'Kasia Kasienka' => '20' , 'Tom Tom' => '15', 'Chris Zerowy' => '10' , 'Kwiatkowski Staszek' => '5');


Te wartosci liczbowe zawsze sa takie same tylko nazwy sie zmieniaja.

I teraz mam w pliki .txt taka strukture [linia o linii]

  1. 1532877777||29-07-2018||nazwa||Tomek Domek||25||Marek // poprawnosc z kluczem nr 0
  2. 1532877777||29-07-2018||nazwa||Kasia Kasienka||20||Marek // poprawnosc z kluczem nr 1
  3. 1532877777||29-07-2018||nazwa||Chris Zerowy||15||Marek // brak
  4. 1532877777||29-07-2018||nazwa||Kwiatkowski Staszek||10||Marek // brak
  5. 1532877777||29-07-2018||nazwa||Tom Tom||5||Marek // brak
  6.  
  7. 1532877777||29-07-2018||nazwa||Tom Tom||25||Tomek // brak
  8. 1532877777||29-07-2018||nazwa||Tomek Domek||20||Tomek // brak
  9. 1532877777||29-07-2018||nazwa||Chris Zerowy||15||Tomek // brak
  10. 1532877777||29-07-2018||nazwa||Kwiatkowski Staszek||10||Tomek // brak
  11. 1532877777||29-07-2018||nazwa||Kasia Kasienka||5||Tomek // brak
  12.  
  13. 1532877777||29-07-2018||nazwa||Tomek Domek||25||Tata // poprawnosc z kluczem nr 0
  14. 1532877777||29-07-2018||nazwa||Kasia Kasienka||20||Tata // poprawnosc z kluczem nr 1
  15. 1532877777||29-07-2018||nazwa||Tom Tom||15||Tata // poprawnosc z kluczem nr 2
  16. 1532877777||29-07-2018||nazwa||Kwiatkowski Staszek||10||Tata // brak
  17. 1532877777||29-07-2018||nazwa||Chris Zerowy||5||Tata // brak
  18.  
  19. itd...
  20.  


Teraz tlumacze. Tablica $p zawiera klucze ktore sie zmieniaja ale wartosci zawsze sa takie same czyli dla klucza 0 bedzie 25, dla klucza 1=>20, klucz 2=>15, klucz 3=>10 i klucz 4=>5

W pliku jak widac jest po pięć linii dla kazdego jakby imienia [ostatni indeks]. Jest tyle samo linii ile indeksow w zmiennej $p. Ilosc linii nie jest okreslona. Chodzi o porownanie wystepowania tych liczb i przypisac to konkretnym danym.

To jest typowane ktore zapisywane jest wpliku przez userow. Maja pięć mozliwosci i musza je wybrac. Kiedy typowanie sie konczy ja podaje kto wygral [ tablica $p ]

Przyklad j/w czyli jesli klucz 0 z tablicy i jego wartosc [przykladowo 'Tomek Domek' => '25'] rowna jest wartosci z indeksow 3 i 4 z pliku nalezy przypisac wartosc klucza 3 do wartosci klucza 4 tyle ze trzeba wszystkie wartosci sprawdzac z tymi z pliku czyli wynikiem w tym przykladzie bedzie:

  1. Marek trafnie wytypowal pierwsze miejsce osoby Tomek Domek. Liczba punktow 25
  2. Marek trafnie wytypowal drugie miejsce osoby Kasia Kasienka. Liczba punktow 20
  3. // kolejne linie sa dla usera Tomek ktory nic nie trafil i nic tutaj nie moze byc wyswietlone
  4. Tata trafnie wytypowal pierwsze miejsce osoby Tomek Domek. Liczba punktow 25
  5. Tata trafnie wytypowal drugie miejsce osoby Kasia Kasienka. Liczba punktow 20
  6. Tata trafnie wytypowal trzecie miejsce osoby Tom Tom. Liczba punktow 15
  7.  
  8. itd..


Zawsze jest pięć. Co nie jest zgodne nie moze sie wyswietlic. Niestety nie daje rady sam z tym i jest to za trudne dla mnie. Ktos moglby mi pomoc ?

Ok. Zrobilem przyklad zeby sprawdzic dzialanie i dziala lecz na dwoch tablicach z piecioma kluczami i wartosciami. Problem pojawia sie kiedy chce wstawic tablice z pliku.

  1.  
  2. <?php
  3.  
  4.  
  5.  
  6. $tablica1 = array("Massa" => '25', 'Kubica' => '20', 'Vettel' => '15', 'Lauda' => '10', 'Raikonnen' => '5');
  7.  
  8. $tablica2 = array('Massa' => '25', 'Vettel' => '20', 'Kubica' => '15' , 'Lauda' => '10', 'Raikonnen' => '5');
  9.  
  10.  
  11.  
  12. foreach($tablica1 as $klucz => $wartosc) {
  13. if($wartosc==$tablica2[$klucz])
  14. {
  15.  
  16. print $klucz . ' => ' . $wartosc . ' ';
  17. }
  18. }
  19.  
  20. ?>
  21.  


Przyklad wyswietla TYLKO te klucze i wartosci ktore sa na identycznych miejscach z identycznymi wartosciami. I o to mi chodzi tylko jak zrobic to z plikiem gdzie moze byc i 1000 linii

Ok poradzilem sobie ale mam jeszcze jedno pytanie. W pliku sa wartosci liczbowe, nick i nazwa osoby typowanej. W jaki sposob zsumowac dla kazdej z osob wartosci i je wyswietlic. Zalozmy ze osoba TOMEK wytypuje prawidlowo miejsce pierwsze (25pkt) i trzecie (15pkt) i teraz chcialbym to dodac do siebie w postaci:

PLik .txt

  1. 1532877147||29-07-2018||nazwa||Kubica Robertl||25||Tomek
  2. 1532877147||29-07-2018||nazwa||Vettel Sebastian||15||Tomek
  3. 1532877147||29-07-2018||nazwa||Ktos inny||25||Kasia
  4. 1532877147||29-07-2018||nazwa||Ktos inny 2||20||Kasia
  5. 1532877147||29-07-2018||nazwa||Vettel Sebastian||15||Kasia


Wynik:

  1. Tomek ma wsumie 40 pkt.
  2. Kasia ma w sumie: 15 pkt
trzczy
Lepiej jakbyś napisał, gdzie przy tym sumowaniu punktów Tomka napotykasz na barierę własnych umiejętności. Wtedy szybciej znajdzie się pomoc.

Na szybko widzę to tak: http://php.net/manual/pl/function.file.php
Funkcja file pozwoli zamienić plik na tablicę.

Potem piszesz funkcję, która dla zadanego imienia znajduje odpowiednie elementy tablicy.
Potem funkcję, która sumuje konkretne pola z tablicy tablic.
hopaj
W tym pliku moze byc tak jak wyzej a moze byc i tak:

  1. 1532877147||29-07-2018||nazwa||Ktos inny||25||Kasia
  2. 1532877147||29-07-2018||nazwa||Ktos inny 2||20||tata
  3. 1532877147||29-07-2018||nazwa||Vettel Sebastian||15||tata
  4. 1532877147||29-07-2018||nazwa||Ktos inny 2||20||Kasia
  5. 1532877147||29-07-2018||nazwa||Vettel Sebastian||15||Tomek
  6. 1532877147||29-07-2018||nazwa||Vettel Sebastian||15||Kasia
  7. 1532877147||29-07-2018||nazwa||Kubica Robertl||25||Tomek
  8. 1532877147||29-07-2018||nazwa||Vettel Sebastian||15||Tomek
  9. 1532877147||29-07-2018||nazwa||Ktos inny||25||Kasia
  10. 1532877147||29-07-2018||nazwa||Vettel Sebastian||15||Tomek
  11. 1532877147||29-07-2018||nazwa||Ktos inny 2||20||Kasia
  12. 1532877147||29-07-2018||nazwa||Vettel Sebastian||15||Tomek
  13. 1532877147||29-07-2018||nazwa||Vettel Sebastian||15||Kasia
  14. 1532877147||29-07-2018||nazwa||Ktos inny||25||tata
  15. 1532877147||29-07-2018||nazwa||Ktos inny 2||20||tata
  16. 1532877147||29-07-2018||nazwa||Vettel Sebastian||15||tata


Wylistowac z tablicy to nie jest problem. Problem stanowi przypisanie danemu imieniu sumy pól czyli wynik powinien wygladac tak :

  1. Kasia ma 115 pkt
  2. tata ma 100 pkt
  3. tomek ma 85 pkt


Nie chodzi mi o samo wylistowanie tablicy.

Problem jest z tym wlasnie
viking
A nie możesz tego jak człowiek zapisać w bazie (nawet sqlite) i robić normalne zapytania.?
hopaj
Cytat(viking @ 1.08.2018, 12:10:12 ) *
A nie możesz tego jak człowiek zapisać w bazie (nawet sqlite) i robić normalne zapytania.?


Prosba jest o pomoc nie o pisanie w bazie.


Cytat(trzczy @ 31.07.2018, 09:08:43 ) *
Potem piszesz funkcję, która dla zadanego imienia znajduje odpowiednie elementy tablicy.
Potem funkcję, która sumuje konkretne pola z tablicy tablic.

Funkcja napisana i posortowana poprzez



Teraz mam przypisane dane Imie => punkty
ale za chiny nie wiem jak zsumowac punkty bo jak wsadze to w pętle a musze to zczytam wszystko jak leci a chce tylko zeby kazde imie wyswietlilo sie tylko raz a obok suma punktow.
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.