cari

Rumah  >  Soal Jawab  >  teks badan

Bagaimanakah saya boleh mengindeks semula tatasusunan dengan nilai kunci integer negatif supaya item 0,1,2,3,-1 diisih kepada -1,0,1,2,3 dan kemudian dinomborkan semula kepada 0,1,2,3 ,4?

Andaikan saya mempunyai ini:

$arr = [];
$arr[0] = 'second';
$arr[-1] = 'first';

Bagaimana untuk menukarnya kepada $arr[0 => 'first', 1 => 'second']

Ini adalah yang terbaik yang saya hasilkan:

$new = [];
foreach ($arr as $key => $value) {
    $new[$key + 1] = $value;
}

ksort($new);

Tetapi seperti tatasusunan dalam php, saya tertanya-tanya sama ada sebenarnya terdapat fungsi terbina dalam mudah yang boleh saya gunakan?

P粉198670603P粉198670603457 hari yang lalu638

membalas semua(2)saya akan balas

  • P粉441076405

    P粉4410764052023-09-13 10:23:40

    Saya tidak boleh tidak tertanya-tanya sama ada matlamat anda hanyalah untuk memasukkan nilai pada permulaan tatasusunan, mungkin itu yang anda cari array_unshift()?

    Jadi bukannya

    $arr[-1] = 'first';
    

    ...lepas tu susun, boleh buat ni

    array_unshift($arr, 'first');
    

    Ini akan berada di indeks 0 处插入 'first' dan gerakkan setiap item sedia ada yang diindeks secara berangka dalam tatasusunan naik satu.

    balas
    0
  • P粉107991030

    P粉1079910302023-09-13 10:07:27

    Gunakan ksort untuk mengisih tatasusunan, kemudian gunakan array_values padanya. Ia akan mengindeks semula kunci bermula dari 0:

    $arr = [];
    $arr[0] = 'second';
    $arr[-1] = 'first';
    
    ksort($arr);
    $result = array_values($arr);

    balas
    0
  • Batalbalas