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);
.....}
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