Nasıl dizi emir değiştirmek için?

4 Cevap php
$a = array(0=>'a',1=>'b',2=>'c', 3=>'d');

Ben olmak için sırasını değiştirmek istiyorsanız 3,2,0,1:

$a = array(3=>'d',2=>'c',0=>'a', 1=>'b');

4 Cevap

Programlı sırasını değiştirmek istiyorsanız, çeşitli array sorting functions in PHP bakabilirsiniz özellikle

  • uasort() - Bir kullanıcı tanımlı karşılaştırma fonksiyonu ile bir diziyi sıralar ve endeks ilişkiyi sürdürmek
  • uksort() - Bir kullanıcı tanımlı bir işlev kullanarak tuşları ile bir diziyi sıralar
  • usort() - Bir kullanıcı tanımlı bir işlev kullanarak değerlerine göre bir diziyi sıralar

Yannicks example aşağıda dayanarak, bunu bu şekilde yapabiliriz:

$a = array(0 => 'a', 1 => 'b', 2 => 'c', 3 => 'd');
$b = array(3, 2, 0, 1); // rule indicating new key order
$c = array();
foreach($b as $index) {
    $c[$index] = $a[$index];
}
print_r($c);

verecek

Array([3] => d [2] => c [0] => a [1] => b)

Ama dediğim gibi bize diziyi sipariş veya ihtiyaç hakkında daha spesifik olması kuralı söyleme, biz bunun ötesinde size yardımcı olamaz, yorum dedi.

PHP diziler aslında haritalar sipariş beri numaralandırılıyor öğelerin sırası korunmuş ise, emin değilim.

Eğer sadece belirli bir düzen içinde onları numaralandırmak isterseniz:

$a = array(0=>'a',1=>'b',2=>'c', 3=>'d');
$order = array(3, 2, 0, 1);

foreach ($order as $index)
{
  echo "$index => " . $a[$index] . "\n";
}
function reorder_array(&$array, $new_order) {
  $inverted = array_flip($new_order);
  uksort($array, function($a, $b) use ($inverted) {
    return $inverted[$a] > $inverted[$b];
  });
}

$a = array(0=>'a',1=>'b',2=>'c', 3=>'d');
reorder_array($a, array(3, 2, 0, 1));

var_dump($a);

Sonuç:

Array ( [3] => d [2] => c [0] => a [1] => b )

burada nasıl

krsort($a);