array_slice($array, $offset, $length) $offset konumundan başlayan $length elemanlık yeni bir dizi döndürür. Orijinal dizi değişmez. Sona kadar her şeyi almak için $length değerini yazmayın.
Başlangıç bir anahtar değil bir konumdur (0 ilk elemandır). Bu, ilişkisel diziler ve anahtarları 0, 1, 2 olmayan diziler için önemlidir.
Negatif başlangıçla son N elemanı alma
Negatif bir başlangıç sondan sayar: -1 son elemandır, -3 sondan üçüncüden başlar. Negatif bir uzunluk sondan o kadar eleman önce durur.
Var olandan fazla eleman istemek sorun değildir: array_slice($log, 0, 100) beşinin hepsini döndürür.
preserve_keys ile orijinal anahtarları koruma
Dördüncü argüman olarak true vermedikçe tam sayı anahtarlar 0'dan yeniden numaralanır. Dizge anahtarlar her zaman korunur.
Anahtarlar veritabanı id'leri gibi bir anlam taşıdığında ve elemanları daha sonra onlarla arayacağınızda true kullanın.
array_slice ile bir diziyi sayfalama
Sayfa başına $perPage eleman olan bir listenin $page sayfasını göstermek tek bir dilimdir: başlangıç ($page - 1) * $perPage olur. Bu örnek sayfa bağlantılarıyla bir HTML listesi yazdırır. Çalıştırın ve bir sayfa numarasına tıklayın: aynı betik bağlantıdan gelen $_GET['page'] ile yeniden çalışır.
max(1, min($pages, ...)) satırı elle yazılmış bir ?page=99 veya ?page=-1 değerini geçerli aralıkta tutar. Bir veritabanında her satırı yüklemek yerine LIMIT ve OFFSET ile yalnızca bir sayfa istersiniz, ama zaten bellekte olan bir liste için işin tamamı array_slice ile biter.
array_slice ile array_splice karşılaştırması
İsimleri tek harfle ayrılır ve orijinal üzerinde zıt şeyler yaparlar. array_slice bir parçayı kopyalayıp çıkarır. array_splice verdiğiniz diziden parçayı keser, diziyi yeniden numaralar ve çıkarılan elemanları döndürür. Kesilen yere yenilerini de ekleyebilir.
array_slice | array_splice | |
|---|---|---|
| Orijinali değiştirir | hayır | evet (referansla) |
| Döndürür | seçilen parçayı | çıkarılan parçayı |
| Eleman ekleyebilir | hayır | evet, dördüncü argüman |
| Tam sayı anahtarlar | preserve_keys yoksa yeniden numaralanır | yeniden numaralanır |
Eleman silmenin diğer yolları için diziden eleman silme sayfasına bakın.
Bir diziyi parçalara bölme
Tüm sayfalara aynı anda ihtiyacınız olduğunda, örneğin ürünleri üçerli satırlara dizmek için, array_chunk tekrarlanan dilimlemeyi sizin yerinize yapar.
3 değerini 2 veya 4 yapın ve tekrar çalıştırın. Son parça geriye kalanı tutar.
Sıkça Sorulan Sorular
PHP'de bir dizinin ilk N elemanını nasıl alırım?
array_slice($arr, 0, 3) ilk üç elemanı döndürür. Dizide üçten az eleman varsa hepsini alırsınız ve hata olmaz.
Bir dizinin son N elemanını nasıl alırım?
Negatif bir başlangıç kullanın: array_slice($arr, -3) son üç elemanı döndürür. Uzunluğu yazmamak "sona kadar" anlamına gelir.
array_slice içinde preserve_keys ne işe yarar?
Varsayılan olarak array_slice tam sayı anahtarları 0'dan yeniden numaralar. Orijinal tam sayı anahtarları korumak için dördüncü argüman olarak true verin: array_slice($arr, 2, 3, true). Dizge anahtarlar onunla da onsuz da her zaman korunur.
array_slice ile array_splice arasındaki fark nedir?
array_slice dizinin bir parçasının kopyasını döndürür ve orijinale dokunmaz. array_splice diziyi referansla alır, o parçayı diziden çıkarır (isteğe bağlı olarak yerine yenilerini ekler) ve çıkardığını döndürür.