![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 11 Pomógł: 0 Dołączył: 14.07.2009 Skąd: Rzeszów Ostrzeżenie: (0%) ![]() ![]() |
Witam. Jako że mam pewien problem, z którym wyjątkowo nie potrafię sobie poradzić od kilku dni, postanowiłem zapytać o niego ekspertów. Jest to mój pierwszy post, zawsze radziłem sobie sam i wiem do czego służy wyszukiwarka. Mianowicie wygląda to tak:
Mam tablicę obiektów, w której to obiekty są posortowane wg ich pola $obiekt->id. Chciałbym wykonać pętlę, która by sortowała moją tablicę tak, aby po każdym obiekcie o danym $obiekt->id znalazły się obiekty, które wartość $obiekt->id2 mają taką samą jak $obiekt->id poprzedzającego je obiekt. Oczywiście namieszałem, ale w skrócie to chodzi mi o funkcję, która wpisywałaby mi nową wartość do tablicy w jakimś tam miejscu wewnątrz, a nie jako ostatni element, jednocześnie przesuwając indeksy kolejnych kluczy, od miejsca wstawienia nowego elementu o 1 dalej. Nie mam pojęcia jak to rozwiązać. Pozdrawiam wszystkich i z góry dziękuję za konstruktywne odpowiedzi (IMG:style_emoticons/default/smile.gif) |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 952 Pomógł: 154 Dołączył: 20.01.2007 Skąd: /dev/oracle Ostrzeżenie: (0%) ![]() ![]() |
Algorytm prostego sortowania przez wstawianie się kłania. Przebieg pętli składa się z trzech faz:
1. Szukasz miejsca do wstawienia 2. Wstawiasz element 3. Przesuwasz wszystkie obiekty o jedną pozycję do przodu. Przesuwanie robi się bardzo prosto. Jesteś na pozycji X w tablicy. Zapamiętujesz jej obiekt w zmiennej tymczasowej A, a na pozycję wstawiasz obiekt ze zmiennej tymczasowej B. Następnie przepisujesz obiekt ze zmiennej A do B. Tyle. Pierwszą wartość zmiennej B bierzesz z pozycji tablicy, pod którą wstawiasz nowy element. |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 11 Pomógł: 0 Dołączył: 14.07.2009 Skąd: Rzeszów Ostrzeżenie: (0%) ![]() ![]() |
Dzięki wielkie (IMG:style_emoticons/default/smile.gif) spróbuję tak zrobić (IMG:style_emoticons/default/smile.gif) jednak takie proste rzeczy mi jeszcze sprawiają problemy (IMG:style_emoticons/default/wstydnis.gif) pozdrawiam
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 25 Pomógł: 7 Dołączył: 27.03.2011 Skąd: Kęty Ostrzeżenie: (0%) ![]() ![]() |
Bo każde zadanie ma więcej niż jedno rozwiązanie (IMG:style_emoticons/default/wink.gif)
a ja już dawno temu nauczyłem się że do operacjach na tablicach lepiej korzystać z funkcji php do tego stworzonych niż używać pętli. Rzadko zdarz się operacja na tablicy której nie da się wykonać przez kombinację funkcji php zawartych tutaj (IMG:style_emoticons/default/wink.gif)
PS. Założyłem że tablica jest ciągła, indeksowana od 0 i nie jest to tablica asocjacyjna. |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 4 655 Pomógł: 556 Dołączył: 17.03.2009 Skąd: Katowice Ostrzeżenie: (0%) ![]() ![]() |
Wszystko ładnie pięknie, tylko on nie ma zwykłych tablic, tylko musi informacje wyłuskać z obiektu, dlatego powinien zastosować się do rady pierwszej.
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 25 Pomógł: 7 Dołączył: 27.03.2011 Skąd: Kęty Ostrzeżenie: (0%) ![]() ![]() |
... ale w skrócie to chodzi mi o funkcję, która wpisywałaby mi nową wartość do tablicy w jakimś tam miejscu wewnątrz, a nie jako ostatni element, jednocześnie przesuwając indeksy kolejnych kluczy, od miejsca wstawienia nowego elementu o 1 dalej. @fifi209 moja funkcja robi dokładnie to co chciał autor niezależnie od tego czym są elementy tablicy przykład był z stringami bo było prościej, spróbuj z obiektami i też zadziała. Czytać ze zrozumieniem proponuję autor wyraźnie pisze o tablicy obiektów i problem nie jest z wyszukaniem tylko z wstaiwenim. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 06:35 |