philos Δημοσ. 27 Ιανουαρίου 2023 Share Δημοσ. 27 Ιανουαρίου 2023 (επεξεργασμένο) Με λίγη έρευνα στο διαδίκτυο έχω φτιάξει την εξής class method που θέλω να κάνει ό,τι κάνει και η array_slice, αλλά σε object (το οποίο δεν θέλω να το μετατρέψω σε (array) $obj, για χρήση στην array_slice()). protected function object_slice($obj, $startPosition, $perPage, $page) { if ($page == 1) { $startPosition = $startPosition - 1; } $output = []; if ($obj) { $i = -1; foreach ($obj AS $j) { $i++; if ($i < $startPosition) { continue; } if ($i > $startPosition + $perPage) { break; } $output[] = $j; } } return $output; } Ας πούμε με σύνολο 6 στοιχεία, αν βάλω perPage = 2, θα έχω 3 σελίδες. Το πρόβλημα είναι ότι στη 2η σελίδα βλέπω 3 στοιχεία (λάθος) και παράλληλα στην 1η και την 3η σελίδα 2 στοιχεία (σωστό). Άρα κάτι λάθος παίζει στη 2η σελίδα, η οποία θα έπρεπε να δείχνει 2 στοιχεία (το ένα έξτρα στοιχείο το βλέπω και στη 3η σελίδα). Με 6 στοιχεία, αν βάλω perPage = 3, βλέπω κανονικά 2 σελίδες με 3 στοιχεία η καθεμία (σωστό). Άρα μια μικρή διορθωσούλα θα τη θέλει. Ο πιο main κώδικας που τρέχει είναι ο εξής: $startPosition = ($page - 1) * $perPage; $nodeTree = $this->object_slice($nodeTree, $startPosition, $perPage, $page); Βλέπετε κάτι; Επεξ/σία 27 Ιανουαρίου 2023 από philos Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
philos Δημοσ. 27 Ιανουαρίου 2023 Μέλος Share Δημοσ. 27 Ιανουαρίου 2023 ok το βρήκα on my own! Τελικό: protected function object_slice($obj, $startPosition, $perPage, $page) { $output = []; if ($obj) { $i = -1; foreach ($obj AS $j) { $i++; if ($i < $startPosition) { continue; } if ($i >= $startPosition + $perPage) { break; } $output[] = $j; } } return $output; } Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα