![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 3 Pomógł: 0 Dołączył: 9.12.2010 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
prosze o pomoc w następującej sprawie: Mam tablice w której klucz to liczby, ale nie zaczynające się od zera, ale np. od 17, oraz z możliwymi "dziurami", czyli np. 17, 18, 19, 22, 23, 24, 27, itd Utrudnienie polega na tym, że elementów w tablicy jest ok 20 tysięcy. Potrzebuje do dalszej obróbki podzielić tablicę na mniejsze kawałki np po 100 elementów. Próbowałem do tego użyć następującej konstrukcji: CODE $klucz=0; while (!empty($tablica)) { $tablica_tmp = array_slice($tablica, $klucz, 100, true); //tu pobieram pierwszych 100 elementów nie ruszając kluczy i mimo ze klucz jest ustawiony na 0 jako pierwszy pojawia się element o indeksie 17 co sugerowaloby że funkcja skacze do pierwszej pozycji a nie do pozycji z indeksem 0 $koniec=end($tablica_tmp); // przesuwam wskaźnik na koniec małej odciętej tablicy $klucz=key($tablica_tmp)+1; // podstawiam do zmiennej tablice zmniejszoną o pierwszych 100 elementów( w kązdym razie chciałbym) zachowując oryginalne klucze echo 'Dla sprawdzenia klucz to: '.$klucz.'<br>'; // tu przekonuje sie ze ostatni zwiekszony o 1 jest poprawny $tablica = array_slice($tablica, $klucz, null, true); // a tu niestety do zmiennej podstawia sie juz fikcja print_r($tablica_tmp); .....} Uzyskany efekt niestety daleki jest od satysfakcjonującego, bo o ile w pierwszym użyciu funkcji array_slice parametrem true można wpłynąć na pozostawienie oryginalnych kluczy, to w drugim nie bardzo wiem jak poprawnie i czy w ogole można, przekazać ten parametr. Po wstawieniu 'null' w kolejnym kroku tablica 100 elementowa ma pierwszy element oddalony o nieregularną wartość rzędu 3 tysięcy od ostatniego elementu z poprzedniego kroku. Inne podobne funkcje PHP na siłe renumerują index, a tego nie chce. Wdzięczny będę za wszelkie sugestie. pozdrawiam Arek |
|
|
![]()
Post
#2
|
|
Grupa: Opiekunowie Postów: 3 855 Pomógł: 317 Dołączył: 4.01.2005 Skąd: że ![]() |
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 24.08.2025 - 15:08 |