![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 332 Pomógł: 6 Dołączył: 27.11.2008 Ostrzeżenie: (0%) ![]() ![]() |
Witam mam takie dwie tablice
gdzie wartości z jednej tablicy odpowiadają wartością z drugiej tablicy. Liczba elementów w tych tablicach zawsze taka sama. I chciałbym połączyć te dwie tablice w jedną, aby otrzymać taką tablice gdzie kluczem są wartości z pierwszej tablicy a wartości wartość z drugiej tablicy. Jest do tego jakaś funkcja. ? Jedynie, co znam to array_merge, ale to nie spełnia tego, co chce zrobić. Ten post edytował arzach 2.08.2010, 15:30:59 |
|
|
![]()
Post
#2
|
|
![]() Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk ![]() |
Manual gryzie co nie?
http://pl2.php.net/array_combine -------------------- |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 332 Pomógł: 6 Dołączył: 27.11.2008 Ostrzeżenie: (0%) ![]() ![]() |
Znowu musiałem trafić na ciebie. Zamiast pomoc normalnie to najeżdżasz od razu na mnie. Po prostu zapomniałem o tej funkcji. Mam teraz gorszy problem zrobiłem tak
I to daje taką tablice Kod Array ( [0] => Array ( [GP Mazowsza] => 25 [GP Lodzi] => 15 [GP Stanów Zjednoczonych] => 15 ) [1] => Array ( [GP Stanów Zjednoczonych] => 18 [GP Lodzi] => 25 ) [2] => Array ( [GP Lodzi] => 0 [GP Mazowsza] => 18 ) [3] => Array ( [GP Lodzi] => 0 ) ) I jak widzimy w tablicy pierwszej mamy takie elementy i klucze [GP Mazowsza] => 25 [GP Lodzi] => 15 [GP Stanów Zjednoczonych] => 15 I jak uzupełnić tablice kolejne o brakujące elementy z tablicy tej, w której jest najwięcej elementów. W drugiej mamy [GP Stanów Zjednoczonych] => 18 [GP Lodzi] => 25 A powinno być [GP Stanów Zjednoczonych] => 18 [GP Lodzi] => 25 [GP Mazowsza] => 0 I tak na wszystkie tablice I myślałem by za pomocą funkcji max() sprawdzić, w której tablicy jest najwięcej elementów i jeśli jest najwięcej to pobrać klucz tej tablicy Próbowałem cos tak zdziałać
ale nic z tego proszę o wskazówki jak to zrobić? Ten post edytował arzach 2.08.2010, 16:01:11 |
|
|
![]()
Post
#4
|
|
![]() Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk ![]() |
Znowu musiałem trafić na ciebie. Zamiast pomoc normalnie to najeżdżasz od razu na mnie. Po prostu zapomniałem o tej funkcji. Mam teraz gorszy problem zrobiłem tak A jak inaczej przekazać dosadniej RTFM? 1) Najpierw zacznij od przeszukania najdłuższej tablicy 2) Stwórz tablicę, gdzie jako klucze wstawisz te z 1 pkt a wartości 0 3) foreach + array_merge -------------------- |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 142 Pomógł: 49 Dołączył: 29.07.2010 Ostrzeżenie: (0%) ![]() ![]() |
max() nie możesz użyć, bo co będzie jeśli będą np. takie tablice? 1. array('GP USA' => 10, 'GP Canada' => 10, 'GP Mexico' => 10); 2. array('GP Spain' => 10, 'GP France' => 10, 'GP Italy' => 10); Obie mają po trzy elementy, a przecież po "przeleceniu" wszystkich tablic powinieneś uzyskać: 1. array('GP USA' => 10, 'GP Canada' => 10, 'GP Mexico' => 10, 'GP Spain' => 0, 'GP France' => 0, 'GP Italy' => 0); 2. array('GP Spain' => 10, 'GP France' => 10, 'GP Italy' => 10, 'GP USA' => 0, 'GP Canada' => 0, 'GP Mexico' => 0); |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 332 Pomógł: 6 Dołączył: 27.11.2008 Ostrzeżenie: (0%) ![]() ![]() |
Twój kod nie do końca dobrze działa dostaje teraz taką tablice
Kod Array ( [0] => Array ( [GP Mazowsza] => 25 [GP Lodzi] => 15 [GP Stanów Zjednoczonych] => 15 ) [1] => Array ( [GP Stanów Zjednoczonych] => 18 [GP Lodzi] => 25 [GP Mazowsza] => 0 ) [2] => Array ( [GP Lodzi] => 0 [GP Mazowsza] => 18 ) [3] => Array ( [GP Lodzi] => 0 [GP Mazowsza] => 0 ) ) Czyli w tablicy o indeksie 2 i 3 brakuje po jednej wartości Proszę o pomoc, co może być źłe? Ten post edytował arzach 2.08.2010, 16:36:00 |
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 142 Pomógł: 49 Dołączył: 29.07.2010 Ostrzeżenie: (0%) ![]() ![]() |
Czyli w tablicy o indeksie 2 i 3 brakuje po jednej wartości Proszę o pomoc, co może być źłe? Niestety nie mam pojęcia - bo wg moich testów to działa:
EDIT: zrób var_dump z $wyscigi - będziemy wiedzieć więcej. EDIT2: ok, już wiem, array_unique zostawia klucze w spokoju - musisz tam dać w takim razie array_values(array_unique($wyscigi)); No jest kilka rzeczy, które są nie tak :)
Ten post edytował skarabe.pl 2.08.2010, 16:50:17 |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 332 Pomógł: 6 Dołączył: 27.11.2008 Ostrzeżenie: (0%) ![]() ![]() |
Dziękuje bardzo mi pomogłeś mam ostatni mały problem próbuje posortować tablice z nazwami wyścigów alfabetycznie rosnąco i zrobiłem tak i dla czego to nie działa?
|
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 142 Pomógł: 49 Dołączył: 29.07.2010 Ostrzeżenie: (0%) ![]() ![]() |
Zamiana kolejności pętli + ksort :) Ten post edytował skarabe.pl 2.08.2010, 19:06:00 |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 332 Pomógł: 6 Dołączył: 27.11.2008 Ostrzeżenie: (0%) ![]() ![]() |
Dziękuje bardzo
Musiałem w sowim kodzie zrezygnować z array_combine, ponieważ wymaga unikalnego klucza a u mnie się powtarzały i kod wygląda teraz tak.
I może mi ktoś pomoc połączyć powyższy kod tak by działał z tym, co teraz mam. Tablice wyscig_name I wyscig_pkt muszą posiadać tyle samo elementów. I może mi ktoś pomoc połączyć powyższy kod tak by działał z tym, co teraz mam. |
|
|
![]()
Post
#11
|
|
![]() Grupa: Zarejestrowani Postów: 142 Pomógł: 49 Dołączył: 29.07.2010 Ostrzeżenie: (0%) ![]() ![]() |
Na Twoim miejscu raczej rozważyłbym strukturę typu:
Będzie trochę przejrzyściej :) No i napisz trochę więcej na temat powodów zmiany - bo teraz zaburzasz całą logikę skryptu (jak w jednym zespole będą dwa takie same wyścigi, to o ile wyścigów uzupełnić zespoły, które nie mają na swoim koncie takiego wyścigu?). Ten post edytował skarabe.pl 2.08.2010, 21:30:28 |
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 332 Pomógł: 6 Dołączył: 27.11.2008 Ostrzeżenie: (0%) ![]() ![]() |
Przedstawię cały kod to może będzie wiadome, o co mi chodzi
I kod ten generuje taką tabelkę http://www.fusions.cba.pl/kierowcy/tabele/....php?sezon_id=5 Tam gdzie jest Powinna być pętla foreach wyświetlająca pkt Do tablicy trzeba dodać pkt, ale tak by pkt były powiązane z wyścigiem, czyli Klucz= klucz z tablicy $wyscigi_id[] i jak mam to zrobić proszę o pomoc? |
|
|
![]()
Post
#13
|
|
![]() Grupa: Zarejestrowani Postów: 142 Pomógł: 49 Dołączył: 29.07.2010 Ostrzeżenie: (0%) ![]() ![]() |
Wciąż nie widzę powodu dla którego nie miałoby działać array_combine i dla którego wyrzuciłeś do kosza większość poprzedniego kodu :) Spokojnie można by było zastosować poprzednią strukturę, byłoby to nawet prostsze.
|
|
|
![]()
Post
#14
|
|
Grupa: Zarejestrowani Postów: 332 Pomógł: 6 Dołączył: 27.11.2008 Ostrzeżenie: (0%) ![]() ![]() |
Bo wtedy jak miałem tamten kod to pkt mi źle liczyło
Patrz tutaj http://forum.php.pl/index.php?showtopic=15...mp;#entry773625 Klucze się powtarzały, przez co pkt źle wyświetlało. Ten post edytował arzach 3.08.2010, 08:40:14 |
|
|
![]()
Post
#15
|
|
![]() Grupa: Zarejestrowani Postów: 142 Pomógł: 49 Dołączył: 29.07.2010 Ostrzeżenie: (0%) ![]() ![]() |
Bo wtedy jak miałem tamten kod to pkt mi źle liczyło Patrz tutaj http://forum.php.pl/index.php?showtopic=15...mp;#entry773625 Klucze się powtarzały, przez co pkt źle wyświetlało. No ok, teraz rozumiem. Napisz jeszcze tylko (na przykładzie danych z tamtego pliku) - czy punkty z wyścigów (o tej samej nazwie) powinny się sumować? Czy mają istnieć jako byty niezależne? To, co opisujesz sugeruje to drugie, a to, co robisz (tabelka, HTML) - pierwsze. Bo jeśli to pierwsze, to sprawa jest dość prosta - przerobimy array_combine i będzie hulało :) |
|
|
![]()
Post
#16
|
|
Grupa: Zarejestrowani Postów: 332 Pomógł: 6 Dołączył: 27.11.2008 Ostrzeżenie: (0%) ![]() ![]() |
Przed dodaniem do tablicy Pkt te, co się powtarzają w danym wyścigu powinny się sumować i powinno być tyle samo elektów ile jest wyścigów.
Czyli jak mam takie tablice
Powinien otrzymać Kod Array ( [klucz_z_tablicy_wyscigi] => 25 [klucz_z_tablicy_wyscigi] => 26 ) Jak widać wyścig GP Malezji powtarza się dwa razy czyli w tablicy z punktami muszę sumować dwa elementy o tych samych kluczach co z tablicy $wyscig_name Ten post edytował arzach 3.08.2010, 08:58:30 |
|
|
![]()
Post
#17
|
|
![]() Grupa: Zarejestrowani Postów: 142 Pomógł: 49 Dołączył: 29.07.2010 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#18
|
|
Grupa: Zarejestrowani Postów: 332 Pomógł: 6 Dołączył: 27.11.2008 Ostrzeżenie: (0%) ![]() ![]() |
Poprawiłem gdzie nie gdzie i działa, ale tworzy tzw dodaje niepotrzebnie 0 do tablicy zobacz sam
http://www.fusions.cba.pl/kierowcy/tabele/....php?sezon_id=5 Jak ktoś chce może sobie przetestować panel admina Login test hasło test http://www.fusions.cba.pl/kierowcy/administration/ Ten post edytował arzach 3.08.2010, 09:33:29 |
|
|
![]()
Post
#19
|
|
![]() Grupa: Zarejestrowani Postów: 142 Pomógł: 49 Dołączył: 29.07.2010 Ostrzeżenie: (0%) ![]() ![]() |
A gdzie poprawiłeś? Bo ja widzę tylko dwie literówki:
<td align='center'>".$zespoly['zespol_name']."</td> <td align='center'>".$zespoly['pkt']."</td>"; Powinno być: <td align='center'>".$zespol['zespol_name']."</td> <td align='center'>".$zespol['pkt']."</td>"; EDIT: jeszcze tu: foreach ($wyscigi as $wyscig_name) { powinno być: foreach ($wyscigi as $wyscig_name => $wyscig_id) { Ten post edytował skarabe.pl 3.08.2010, 09:42:55 |
|
|
![]()
Post
#20
|
|
![]() Grupa: Zarejestrowani Postów: 142 Pomógł: 49 Dołączył: 29.07.2010 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 29.05.2025 - 07:04 |