我正在尝试创建一个简单的脚本,它首先将一个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有点新,所以非常感谢您的帮助。
UPDATE://
这就是我最终要做的事情。我应该更彻底地阅读排序功能。我不知道它破坏了原来的指针。
<?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);
?>
答案 0 :(得分:4)
普通sort()
函数会破坏所有值的键,因此当它被排序时,每个键现在都是数字0, 1, 2, 3
。因此,当您使用ksort()
时,它不会执行任何操作,因为它们已经按键进行了数字排序。
尝试使用asort()
维护密钥=&gt;按值排序时的值关联。然后,当您稍后使用ksort()
时,密钥仍然存在,因此您可以按这种方式进行排序。
答案 1 :(得分:-1)
您可以使用reset()函数。 http://php.net/manual/en/function.reset.php