2012-06-08 37 views
6

Herhangi bir nedenle bir diziden öğeleri kaldırırken 0, 1, 2, 3, 4, 5 yerine 0, 2, 3, 4, 6, 9 gibi tuşlarla bırakıyorum. Neden olduğunu anlamaya çalışıyorum ve sort() aracılığıyla her şeyi sıraya koymadan düzeltmek için ne yapabilirim, çünkü bu sırada bir şeyler koyar. Sadece konuşmak konusunu yeniden anahtarlamak istiyorum.PHP dizideki sayısal anahtarları düzeltme

cevap

26

Orijinal dizinin değerlerini almak ve bunları yeni bir diziye döndürmek için array_values() kullanın. Bu yeni dizi ile yeni sayısal tuşlar içerir. tuşları mutlaka önemli olmadığından

$new_array = array_values($old_array); 
+0

Bir dizi anahtarın potansiyel olarak ilişkilendirici olabileceğini ve sizden önce bilmek istediğinizde bunun işe yaramadığını varsayalım. – ThorSummoner

3

, sadece array_values() aracılığıyla nihai sonuç dizisini çalıştırabilir. Tüm değerleri, sıradaki sıraya göre sıralar ve tüm anahtarları sıralı sayısal değerlere sıfırlar.

+0

Aslında yanlıştır, birisi siparişin görünüm sırasının değil, korunduğu foreach emrinin olduğunu saptadı: http://php.net/manual/fr/function.array-values.php#114941 – Sebas

5

array_splice() öğelerini dizinizden kaldırmak için kullanmalısınız, böylece anahtar aynı anda istediğiniz şekilde değişir.

array_values() ile dikkatli olmanız gerekir, çünkü re-order your numeric indexes olabilir, çünkü çalışmaz (veya en azından işe yaramayabilir). İndeks 0'daki değerden sonra endeks 0'daki değeri eklediyseniz, 0 ile array_values() tarafından döndürülen dizinin sonuna dizinin 0 değeri girilir, sizinkinde ilk görünür.