Nasıl php bir dizide eksik dizin ekleyebilirsiniz?

4 Cevap php

Örnek:

Ben var ve bu gibi bir dizi:

Array( [0] => Apple [2] => Orange [5] => Pear [8] => Pear )

Eksik dizinleri tamamlamak için bir fonksiyonu vardır: 1,3,4,6,7??

4 Cevap

Bu daha büyük diziler için hızlı olmalı. Daha küçük diziler için herhangi bir yöntem yapacağız.

$existingKeys = array_keys($array);

//you can use any value instead of null
$newKeys = array_fill_keys(range(min($existingKeys), max($existingKeys)), null);
$array += $newKeys;

//optional, probably not needed
ksort($array);

boş ise en yüksek ve tam için düşük endeksten () için deneyebilirsiniz

for($i = 0 ;$i <= 8 ; $i++) 
{
//if it's not set
if(!isset($array[$i]))
{
//set to empty
$array[$i] = "";
}

}

Ayrıca ilk dizideki elemanların sayısını ve bir fonksiyon içine olabilir

 function completeIndexes($array)
    {

    $total = count($array);
     for($i = 0 ;$i < $total ; $i++) 

        {
        //if it's not set
        if(!isset($array[$i]))
        {
        //set to empty
        $array[$i] = "";
        }

        }
return $array; 
    }
for($i=0;i<count($array);++$i){
    $array[$i] = isset($array[$i])? $array[$i] : '';
}

Bu sadece olsa, boş bir dize ile eksik tuşları doldurur. Bu size uygun emin değilim.

Edit

Benden önce sadece fark Perr0_hunter hemen hemen aynı şeyi yazdı: P

Ne yapmaya çalışıyorsun sen almak çok dizi yeniden düzenlemek ise

Array( [0] => Apple [1] => Orange [2] => Pear [3] => Pear )

Sadece yeni bir Array oluşturun ve içine değerleri kopyalamak. Bu arda yeni endeksler tahsis edecek

yani

$new_array = array();
for( $value in $old_array )
  $new_array[] = $value;