![]() |
![]() |
![]() ![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 34 Pomógł: 0 Dołączył: 15.02.2009 Ostrzeżenie: (0%) ![]() ![]() |
Mam sobie kod:
<?php $conn = mysql_connect("xxx","xxx","xxx"); mysql_select_db("xxx"); if (mysql_errno()) { echo mysql_error() . ": " . mysql_errno() . "<br>n"; exit; } $query = "SELECT user FROM matryca group by user"; $result = mysql_query($query) or die(mysql_error()); $num_rows = mysql_num_rows($result); for ($i=0; $i<$num_rows; $i++) { $wiersz = mysql_fetch_array($result); echo "<br />"; echo "<td>".$wiersz["user"]."</td>"; echo "</td>"; } $query = "SELECT usersl, logi, badi, inne FROM Dane order by usersl"; $result = mysql_query($query) or die(mysql_error()); $num_rows = mysql_num_rows($result); for ($i=0; $i<$num_rows; $i++) { $wiersz = mysql_fetch_array($result); echo "<td>".$wiersz["usersl"]."</td>"; echo "</td>"; } ?> Chciałbym w jakiś sposób porównać wynik z query 1 tak aby do każdego unikalnego "User" odnalazł pasujące dane z query 2 i wyświetlił dane w postaci identycznych rekordów. Czyli dla User z bazy 1 znalazłem "jakieś" rekordy które zawierają sie w query 2 dla dla User z query 1. Podobne rozwiązanie zrobiłem MYSQL ale interesuje mnie rozwiązanie w PHP. Kompletnie nie wiem jak się za to zabrać (IMG:style_emoticons/default/sad.gif) Męczyłem się już array, array_diff a może wystarczy zwykłe if ? Pomoże ktoś? Dzięki |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D ![]() |
To zerknij sobie na spokojnie i pomyśl gdzie robisz porównanie (IMG:style_emoticons/default/smile.gif) Masz w tej chwili dwie dwuwymiarowe tablice. Pierwsza z nich jest postaci:
druga zaś to:
lub coś w ten deseń. Popatrz w jakich indeksach masz userów i co się zmienia (IMG:style_emoticons/default/winksmiley.jpg) To tablica tablic. Zmienia sie pierwszy indeks a user jest zawsze w indeksie 0 drugiego wymiaru w obu przypadkach. Wystarczy więc, że zrobisz foreach idący po tablicy userów i sprawdzający czy w drugiej pętli występuje również w tym samym miejscu ta sama osoba. W efekcie sprowadza się to do: Możesz optymalizować poprzez wyrzucanie potem odpowiedniego klucza z drugiej tablicy. Sprawi to fajną rzecz bo zmniejsza ową tablicę z danymi i gdy pętla przeskoczy do następnego usera, to danych będzie mniej, a więc będzie mniej pustych przebiegów i mniej if-ów (IMG:style_emoticons/default/smile.gif) Z każdym krokiem pierwszej pętli foreach (czyli z kolejnymi userami) druga tablica się zmniejsza i niejako działanie przyspiesza. Możesz jeszcze ewentualnie ustawić w miejscu oznaczonym "size_checker" warunek, że jeśli wielkość $array2 będzie 0 to ma zrobić break i wyjść z foreach na amen. Wtedy pozbędziesz się być może wielu pustych przejść pętli. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 4.10.2025 - 16:22 |