1 - (dizi) saymak için 0'dan ilk anahtar değerleri değiştirin

2 Cevap php

Tamam, bu yüzden gibi bir dizi var:

$myArray[32]['value'] = 'value1';
$myArray[32]['type'] = 'type1';
$myArray[33]['value'] = 'value2';
$myArray[33]['type'] = 'type2';
$myArray[35]['value'] = 'value3';
$myArray[42]['value'] = 'value4';
$myArray[42]['type'] = 'type4';

Yerine Tamam, ilk anahtar 32, 33, 35 bütün numaralarını değiştirmek için hızlı bir yol arıyor ve 42 0 içine, 1, 2, ve 3. Ama ben 2 anahtar ve tüm değerleri korumak gerekir. Dizi bir ksort kullanarak emretti çünkü zaten doğru emretti, ama şimdi ben 0'dan dizi sıfırlamak için ihtiyaç vardır - sayısı ($ myArray) - 1 ve 2. sağlam anahtar ve değer de tutmak.

Birisi bana yardım edebilir mi?

2 Cevap

Orada basit çözümler olabilir ama burada bir çalışma çözüm olabilir:

$myArray = array();
$myArray[32]['value'] = 'value1';
$myArray[32]['type'] = 'type1';
$myArray[33]['value'] = 'value2';
$myArray[33]['type'] = 'type2';
$myArray[35]['value'] = 'value3';
$myArray[42]['value'] = 'value4';
$myArray[42]['type'] = 'type4';

$map = array_flip(array_keys($myArray)); // map old keys to new keys.
$newarray = array();
foreach($myArray as $key => $value) {
    $newarray[$map[$key]] = $value; // use new key and old value.
}

Bunu gerek yok. Neden sadece tek başına bu diziyi bırakmak değil? Gereksiz hamle bir karmaşa kodunuzu yol açacak.