philos Δημοσ. 27 Ιανουαρίου 2023 Δημοσ. 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 Μέλος Δημοσ. 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; }
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα