$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');
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ürmekuksort()
- Bir kullanıcı tanımlı bir işlev kullanarak tuşları ile bir diziyi sıralarusort()
- Bir kullanıcı tanımlı bir işlev kullanarak değerlerine göre bir diziyi sıralarYannicks 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 )