Dahili PHP fonksiyon bir dizi indeksleri sıfırlamak için?

3 Cevap php

Örnek:

$arr = array(1 => 'Foo', 5 => 'Bar', 6 => 'Foobar');
/*... do some function so $arr now equals:
    array(0 => 'Foo', 1 => 'Bar', 2 => 'Foobar');
*/

3 Cevap

Kullan array_values($arr). Tüm değerleri (sayısal endeksli) düzenli bir dizi döndürür.

PHP docs for array_values

Diğer yanıtlar eklemek için array_values() dize anahtarlarını korumak değildir. Diziniz dize anahtarları ve sayısal tuşlar (muhtemelen kötü tasarımın bir göstergesidir, ancak yine de ortaya çıkabilir ki) bir karışımı varsa, sizin gibi bir işlevi kullanabilirsiniz:

function reset_numeric_keys($array = array(), $recurse = false) {
    $returnArray = array();
    foreach($array as $key => $value) {
        if($recurse && is_array($value)) {
            $value = reset_numeric_keys($value, true);
        }
        if(gettype($key) == 'integer') {
            $returnArray[] = $value;
        } else {
            $returnArray[$key] = $value;
        }
    }

    return $returnArray;
}

Ben biliyorum değil ki, zaten kontrol olabilir fonksiyonları here

ama basit bir fonksiyon kendimi yazarken hayal edebiliyorum

resetarray($oldarray)
{
for(int $i=0;$i<$oldarray.count;$i++)
     $newarray.push(i,$oldarray[i])

return $newarray;
}

Ben sözdizimi biraz sinirli değilim ama ben u fikrim var sanırım.