PHP-如何对同一数组进行多次排序



我正在尝试制作一个简单的脚本,它将首先将一个array()放入函数中,这样我就可以多次调用它进行排序

// I want this inside of a function so I can call on it:
$a = array(
    15 => "C",
    12 => "E",
    11 => "B",
    19 => "P",
    10 => "L",
    14 => "N",
    20 => "A"    
 );
// This is how I brought it into a function and formatted it:
function original_array($a){ 
    foreach($a as $key => $types) {
        print $key . " " . ":" . " " . $types . "<br />";
    }
}

然后我只需要调用original_array(),它就会打印出来,但如果我对它排序一次,我就不能再排序了。它只会打印出第一种:

// Print out array is is:
original_array();
// Then I print out array with sort():
sort($a);
original_array($a);
// But if I try and sort it again with different sort it doesn't work:
ksort($a);
original_array($a);

我做错了什么?我对PHP有点陌生,所以非常感谢您的帮助。

更新://

这就是我最终所做的。我应该把排序函数读得更透彻一点。我没有意识到它破坏了原来的指针。

<?php  
// Original array: 
$a = array(
    15 => "C",
    12 => "E",
    11 => "B",
    19 => "P",
    10 => "L",
    14 => "N",
    20 => "A"   
);
// Array for sort() function:
$b = $a
function print_format($array){ 
    foreach($array as $key => $types) {
        print $key . " " . "=>" . " " . $types . "<br />";
    }
}    

print "Original";  
print_format($a);     
print "sort()";
sort($b);
print_format($b);
print "ksort()";
ksort($a);
print_format($a);    
print "asort()";
asort($a);  
print_format($a);    
print "krsort()";
krsort($a);  
print_format($a);
print "rsort()";
rsort($b);  
print_format($b);    
print "arsort()";
arsort($a);  
print_format($a);
?> 

正常的sort()函数会破坏所有值的键,因此在对其进行排序时,每个键现在都是数字0, 1, 2, 3。因此,当您使用ksort()时,它什么也不做,因为它们已经按关键字进行了数字排序。

按值排序时,请尝试使用asort()来维护键=>值关联。然后,当您稍后使用ksort()时,键仍然存在,因此您可以按这种方式进行排序。

您可以使用reset()函数。http://php.net/manual/en/function.reset.php

相关内容

  • 没有找到相关文章

最新更新