PHP Conference Japan 2024

asort

(PHP 4, PHP 5, PHP 7, PHP 8)

asort按升序排序数组并保持索引关联

描述

asort(数组 &$array, 整数 $flags = SORT_REGULAR): true

按升序对array进行就地排序,使其键保持与其关联的值的相关性。

这主要用于排序关联数组,其中实际元素顺序很重要。

注意:

如果两个成员比较相等,则它们保留其原始顺序。在 PHP 8.0.0 之前,它们在已排序数组中的相对顺序是未定义的。

注意:

将数组的内部指针重置为第一个元素。

参数

array

输入数组。

flags

可选的第二个参数flags可用于使用这些值修改排序行为

排序类型标志

返回值

始终返回true

变更日志

版本 描述
8.2.0 返回类型现在为true;以前是布尔值

示例

示例 #1 asort() 示例

<?php
$fruits
= array("d" => "lemon", "a" => "orange", "b" => "banana", "c" => "apple");
asort($fruits);
foreach (
$fruits as $key => $val) {
echo
"$key = $val\n";
}
?>

上面的例子将输出

c = apple
b = banana
d = lemon
a = orange

水果已经按字母顺序排序,并且与每个元素关联的索引已保持不变。

参见

添加注释

用户贡献的笔记 31 条笔记

nick ([AT]) nickyost ([DOT]) com
13 年前
此函数几乎无需任何工作即可用于排序多维数组,方法是使用自定义排序函数中的各个值。

即使不是字符串,此函数也会传递整个子元素。如果它是数组,就像在多维数组中的情况一样,它会将整个子数组作为参数传递。

因此,可以执行以下优雅的操作

<?php
// 对多维数组进行排序
usort($results, "custom_sort");
// 定义自定义排序函数
function custom_sort($a,$b) {
return
$a['some_sub_var']>$b['some_sub_var'];
}
?>

此函数用 4 行代码完成了其他函数需要 40 到 50 行代码才能完成的任务。这不需要您创建临时数组或任何其他内容。对我来说,这是一个非常理想的解决方案。

希望对您有所帮助!
aditycse at gmail dot com
9 年前
/*
* 姓名:Aditya Mehrotra
* 邮箱:[email protected]
*/
// 也包含区分大小写数据的字母数字数组按值排序的示例
$exampleArray1 = $exampleArray2 = array(
0 => 'example1',
1 => 'Example10',
2 => 'example12',
3 => 'Example2',
4 => 'example3',
5 => 'EXAMPLE10',
6 => 'example10'
);

// 默认排序
asort($exampleArray1);

// 按值对包含区分大小写的字母数字数据进行排序
asort($exampleArray2, SORT_STRING | SORT_FLAG_CASE | SORT_NATURAL);

// 默认排序的输出
print_r($exampleArray1);
/*
* 默认排序的输出
数组
(
[5] => EXAMPLE10
[1] => Example10
[3] => Example2
[0] => example1
[6] => example10
[2] => example12
[4] => example3
)
*/

print_r($exampleArray2);
/*
* 包含区分大小写的字母数字数据按值排序的输出
数组
(
[0] => example1
[3] => Example2
[4] => example3
[5] => EXAMPLE10
[1] => Example10
[6] => example10
[2] => example12
)
*/
richard at happymango dot me dot uk
18 年前
这是一个按指定的子数组键(升序或降序)对索引 2D 数组进行排序的函数。

它对于在查询返回后按特定字段对数据库的查询结果进行排序很有用

此函数可能非常占用资源。它会重新创建数组作为哈希表以使用 ksort(),然后再转换回来

默认情况下,它将按升序排序,但如果将 $reverse 指定为 true,它将返回按降序排序的记录

<?php

function record_sort($records, $field, $reverse=false)
{
$hash = array();

foreach(
$records as $record)
{
$hash[$record[$field]] = $record;
}

(
$reverse)? krsort($hash) : ksort($hash);

$records = array();

foreach(
$hash as $record)
{
$records []= $record;
}

return
$records;
}

// 示例如下

$airports = array
(
array(
"code" => "LHR", "name" => "Heathrow" ),
array(
"code" => "LGW", "name" => "Gatwick" ),
);

printf("排序前: <pre>%s</pre>", print_r($airports, true));

$airports = record_sort($airports, "name");

printf("排序后: <pre>%s</pre>", print_r($airports, true));

?>

示例输出

排序前: 数组
(
[0] => 数组 ( [code] => LHR, [name] => Heathrow )
[1] => 数组 ( [code] => LGW, [name] => Gatwick )
)

排序后: 数组
(
[0] => 数组 ( [code] => LGW, [name] => Gatwick )
[1] => 数组 ( [code] => LHR, [name] => Heathrow )
)
mike at clear-link dot com
16 年前
在最近的一个项目中,我需要先按值对关联数组进行排序,然后如果某个特定值出现多次,则按键进行排序。我编写了这个函数来完成此任务。请注意,参数默认情况下按升序对键和值进行排序,但允许对每个参数进行细粒度控制。

<?php
function aksort(&$array,$valrev=false,$keyrev=false) {
if (
$valrev) { arsort($array); } else { asort($array); }
$vals = array_count_values($array);
$i = 0;
foreach (
$vals AS $val=>$num) {
$first = array_splice($array,0,$i);
$tmp = array_splice($array,0,$num);
if (
$keyrev) { krsort($tmp); } else { ksort($tmp); }
$array = array_merge($first,$tmp,$array);
unset(
$tmp);
$i = $num;
}
}

// 示例
$tmp = array('ca'=>1,'cb'=>2,'ce'=>1,'pa'=>2,'pe'=>1);

// 标准 asort
asort($tmp);
print_r($tmp);

// 值升序,键升序排序
aksort($tmp);
print_r($tmp);

// 值降序,键升序排序
aksort($tmp,true);
print_r($tmp);

// 值降序,键降序排序
aksort($tmp,true,true);
print_r($tmp);

// 结果
Array
(
[
pe] => 1
[ca] => 1
[ce] => 1
[cb] => 2
[pa] => 2
)
Array
(
[
ca] => 1
[ce] => 1
[pe] => 1
[cb] => 2
[pa] => 2
)
Array
(
[
cb] => 2
[pa] => 2
[ca] => 1
[ce] => 1
[pe] => 1
)
Array
(
[
pa] => 2
[cb] => 2
[pe] => 1
[ce] => 1
[ca] => 1
)
sweetland at whoadammit dot com
24 年前
这是一个我快速编写的小程序,用于对多维数组进行排序
<?php
/**
** comesafter ($s1, $s2)
**
** 按字母顺序返回 $s1 在 $s2 之后则为 1,否则为 0。
**/

function comesafter ($s1, $s2) {
/**
** 我们不想越过其中一个字符串的边界并导致段错误,
** 所以让我们看看哪个字符串更短。
**/

$order = 1;

if (
strlen ($s1) > strlen ($s2)) {
$temp = $s1;
$s1 = $s2;
$s2 = $temp;
$order = 0;
}

for (
$index = 0; $index < strlen ($s1); $index++) {
/**
** $s1 在 $s2 之后
**/

if ($s1[$index] > $s2[$index]) return ($order);

/**
** $s1 在 $s2 之前
**/

if ($s1[$index] < $s2[$index]) return (1 - $order);
}

/**
** 特殊情况:$s1 是 $s2 的子字符串
**/

return ($order);
}

/**
** asortbyindex ($sortarray, $index)
**
** 通过二级索引对多维数组进行排序。例如,group 和 user 数组的第 I 个成员的第 0 个索引都是字符串标识符。
** 在 user 数组的情况下,这是用户名;在 group 数组中,这是组名。
** asortby
**/

function asortbyindex ($sortarray, $index) {
$lastindex = count ($sortarray) - 1;
for (
$subindex = 0; $subindex < $lastindex; $subindex++) {
$lastiteration = $lastindex - $subindex;
for (
$iteration = 0; $iteration < $lastiteration; $iteration++) {
$nextchar = 0;
if (
comesafter ($sortarray[$iteration][$index], $sortarray[$iteration + 1][$index])) {
$temp = $sortarray[$iteration];
$sortarray[$iteration] = $sortarray[$iteration + 1];
$sortarray[$iteration + 1] = $temp;
}
}
}
return (
$sortarray);
}
?>

代码很长,包含很多注释,希望对您有所帮助。
php at web-in-time dot com
18 年前
acecream 的函数运行良好,尤其是在使用 spectre 扩展的情况下。

然而,有时必须保留索引值。为了实现这一点,只需替换

$sorted_arr[] = $array[$arr_key];



$sorted_arr[$arr_key] = $array[$arr_key];
mike at clear-link dot com
16 年前
我刚刚提交的 aksort 函数中有一个小错误。以下是完整的代码,并已修正错误。

<?php
function aksort(&$array,$valrev=false,$keyrev=false) {
if (
$valrev) { arsort($array); } else { asort($array); }
$vals = array_count_values($array);
$i = 0;
foreach (
$vals AS $val=>$num) {
$first = array_splice($array,0,$i);
$tmp = array_splice($array,0,$num);
if (
$keyrev) { krsort($tmp); } else { ksort($tmp); }
$array = array_merge($first,$tmp,$array);
unset(
$tmp);
$i = $i+$num;
// 已修复上一篇文章中的错误:$i = $num;
}
}
?>
mbevan at marginsoftware dot com
22 年前
没关系……请参考我的上一条说明作为一个快速提示:如果您希望保留键,请使用 asort() 和 arsort() 来代替 sort() 和 rsort()。
jacko at kring dot co dot uk
24 年前
asort 有一个烦人的特性,它会忽略数据中的任何默认或隐式顺序。例如,如果数组的两个元素都包含“banana”,则不能保证排序后第一个仍然是第一个。
这使得 Burrows-Wheeler 块排序的实现有点痛苦,需要在排序之前将尾随字符串附加到所有字符串,并在排序之后将其删除。以保持所谓的“banana”顺序。
richard at happymango dot me dot uk
18 年前
这是我对下面发布的相同函数的修正版本。现在它可以处理排序字段中的重复条目。例如:如果有两条记录的名称都是 Heathrow,它仍然可以工作。

<?php

function record_sort($records, $field, $reverse=false)
{
$hash = array();

foreach(
$records as $key => $record)
{
$hash[$record[$field].$key] = $record;
}

(
$reverse)? krsort($hash) : ksort($hash);

$records = array();

foreach(
$hash as $record)
{
$records []= $record;
}

return
$records;
}

?>
freeman at generalresources dot com
23 年前
asortbyindex($sortarray, $index) 看起来像是 sort 而不是 asort。$sortarray 的键被改变了。
rojaro
20 年前
高级的按第二个索引排序数组函数,可以生成升序(默认)或降序输出,并可以选择使用自然不区分大小写的排序(也可以选择区分大小写)。
只需要前两个参数。

<?php

函数 sabsi ($array, $index, $order='asc', $natsort=FALSE, $case_sensitive=FALSE) {
if(
is_array($array) && count($array)>0) {
foreach(
array_keys($array) as $key) $temp[$key]=$array[$key][$index];
if(!
$natsort) ($order=='asc')? asort($temp) : arsort($temp);
else {
(
$case_sensitive)? natsort($temp) : natcasesort($temp);
if(
$order!='asc') $temp=array_reverse($temp,TRUE);
}
foreach(
array_keys($temp) as $key) (is_numeric($key))? $sorted[]=$array[$key] : $sorted[$key]=$array[$key];
return
$sorted;
}
return
$array;
}

?>
Anon
13 年前
一行代码实现不区分大小写的排序

<?php

array_multisort
(array_map('strtolower', $array), $array);

?>
rcwang at cmu dot edu
22 年前
这是我根据第二个索引对多维数组进行排序的版本。
请随意更改代码以满足您的需求。

<?php
函数 aSortBySecondIndex($multiArray, $secondIndex) {
while (list(
$firstIndex, ) = each($multiArray))
$indexMap[$firstIndex] = $multiArray[$firstIndex][$secondIndex];
asort($indexMap);
while (list(
$firstIndex, ) = each($indexMap))
if (
is_numeric($firstIndex))
$sortedArray[] = $multiArray[$firstIndex];
else
$sortedArray[$firstIndex] = $multiArray[$firstIndex];
return
$sortedArray;
}
?>
salchicha at cable dot net dot co
22 年前
这里有一个我编写的函数,允许你根据成员或函数对特定类的数组进行排序

<?php
// 按其成员之一对类进行排序(即使是小写!!!)
函数 casort($arr, $var) {
$tarr = array();
$rarr = array();
for(
$i = 0; $i < count($arr); $i++) {
$element = $arr[$i];
$tarr[] = strtolower($element->{$var});
}

reset($tarr);
asort($tarr);
$karr = array_keys($tarr);
for(
$i = 0; $i < count($tarr); $i++) {
$rarr[] = $arr[intval($karr[$i])];
}

return
$rarr;
}
?>

它运行良好。例如,我有一个包含标题、isActive()、日期等成员的 Room 类。我可以通过 casort($rooms, "title") 或 casort($rooms, "isActive()") 对数组进行排序,它都能正常工作。
Jesse K
4年前
`asort` 对于对英文数组进行排序来说很好,但是如果数组中存在带重音符号的字符,最好使用 PHP 的 Collator 类的 `asort` 方法。
https://php.net/manual/en/class.collator.php

$collator = new \Collator('fr_CA');
$collator->asort($french_list);

可以使用 `setlocale()` 来控制 `asort` 的行为,但这在不同的系统中并不可靠。
例如,在我的开发环境中,我只能访问以下区域设置

$ locale -a
C
C.UTF-8
POSIX
Anonymous
22 年前
类似于上面,但用于数组的数组而不是对象的数组。

<?php
函数 aasort($x,$var,$cmp='strcasecmp'){
if (
is_string($var) ) $var = "'$var'";
uasort($x,
create_function('$a,$b',
'return '.$cmp.'( $a['.$var.'],$b['.$var.']);')
);
return
$x;
}
?>
marty8zhang at gmail dot com
4年前
"此函数对数组进行排序,使得数组索引保持与其关联的数组元素的相关性。"

请注意,描述中的这句话具有非常重要的含义,尤其是在处理最初未索引(或说是整数索引)的数组和 JSON 编码/解码时。
我没有将其报告为错误,因为最终结果符合描述。

<?php

$myArray
= ['small_image', 'image'];
var_dump(json_encode($myArray)); // string(23) "["small_image","image"]"
var_dump(is_object($myArray)); // bool(false)

asort($myArray);
$myJson = json_encode($myArray);
var_dump($myJson); // string(31) "{"1":"image","0":"small_image"}"
var_dump(is_object($myArray)); // bool(false)

/*
* class stdClass#1 (2) {
* public $1 =>
* string(5) "image"
* public $0 =>
* string(11) "small_image"
* }
*/
var_dump(json_decode($myJson));

?>
stephen [ at ] brooksie-net [ dot ] co [ dot ] uk
11年前
显然需要记录使用的键,这样我们才不会覆盖数组中之前的条目;o)

注意:这也会影响时间,但仍然比其他方法快

* 整型:0.00159 (毫秒)
* 字符串:0.00092 (毫秒)

<?php
私有函数 _keySort(数组 $data)
{
$keys = array();

循环遍历(
$data 作为 $row) {

$keyIncrement =
(!isset(
$keys[$row[$this->_orderField]]))
?
$keys[$row[$this->_orderField]] = 0
: ++$keys[$row[$this->_orderField]];

$tempArray[$row[$this->_orderField].$keyIncrement] = $row;
}

如果 (
$this->_orderDirection == 'DESC') {
krsort($tempArray, SORT_NATURAL | SORT_FLAG_CASE );
} 否则 {
ksort($tempArray, SORT_NATURAL | SORT_FLAG_CASE);
}

返回
$tempArray;

}
?>
przemekkus [at] interia [dot] pl
17年前
由chello.nl的a.brandon编写的函数存在错误——变量名错误。它应该是

如果($rev) arsort($named_hash,$flags=0) ;

而不是

如果($reverse) arsort($named_hash,$flags=0) ;
gunnar [at] taljaren [dot] se
17年前
对于 ($i=0;$i<5;$i++)
$values[] = $i;
asort($values);

有效,但是
对于 ($i=0;$i<5;$i++)
$values[$i] =$i;
asort($values);
无效!
smileaf [at] smileaf [dot] org
17年前
好的,我弄错了,重新阅读之前的帖子后,".$key"很重要。导致我排序问题的原因根本不是这个。而是别的原因。
执行:在返回之前执行asort($records, $flags);可以修复排序问题。
我提到的排序问题会导致对数值数据进行基于字符的排序。
所以不是
1
2
3
...
10
12
20
它返回的是
1
10
12
2
20
3
...
基本上是我一开始试图修复的内容。
Eran
15年前
我为需要从文本文件读取行而不是使用sql - order by语句的人制作了这个示例多维数组排序。

其思想是获取键并对特定列进行排序(顺序),然后根据所选列asort返回的顺序对整个数组进行排序。

<?php
/**
*
* 此示例读取文本数据
* 并对二维数组执行排序
* 就像普通的sql对“order by asc”所做的那样
*
*/

$foo = array();

/*
# SORT_REGULAR - 按正常方式比较项目(不更改类型)
# SORT_NUMERIC - 按数字比较项目
# SORT_STRING - 按字符串比较项目
*/
$sort_by = SORT_REGULAR;

/*
# 0 - 按姓名列排序
# 1 - 按年龄列排序
# 2 - 按排名列排序
# 3 - 按颜色列排序
*/
$order_by = 1;

// 源文件
$line_of_text[1] = 'a1name|f2age|h3rank|jcolor';
$line_of_text[2] = 'b1name|d2age|i3rank|k4color';
$line_of_text[0] = 'c1name|e2age|g3rank|l4color';

// 创建数组
对于 ($x=0; $x<=2; $x++)
{
$line = explode('|',$line_of_text[$x]);

// 按列保存,否则将按行保存
对于 ($i=0; $i<=3; $i++) {
$foo[$i][$x] = $line[$i];
}
}

// 获取键顺序
$a = $foo[$order_by];

// 排序
asort($a, $sort_by);

// 开始打印
echo "<table cellpudding=0 cellspacing=0 border=1>\n";
echo
"<tr>\n";
echo
"<td>键</td>\n";
echo
"<td>姓名</td>\n";
echo
"<td>年龄</td>\n";
echo
"<td>排名</td>\n";
echo
"<td>颜色</td>\n";
echo
"</tr>\n";

// 按键顺序打印
循环遍历 ($a 作为 $k => $v) {
echo
"<tr>\n";
echo
"<td>$k</td>\n";
// 你可以在这里打印一个for循环 (0 到列数[=3])
echo "<td>".$foo[0][$k]."</td>\n";
echo
"<td>".$foo[1][$k]."</td>\n";
echo
"<td>".$foo[2][$k]."</td>\n";
echo
"<td>".$foo[3][$k]."</td>\n";
echo
"</tr>\n";
}
echo
"</table>\n";
?>
spectre [at] hellfish [dot] NOSPAM [dot] org
21年前
这工作得很好,尽管如果在排序之前删除了一个或多个数组索引,它会破坏结果数组。这个应该可以修复它

更改
对于 ($i = 0; $i < sizeof($array); $i++) {


循环遍历 ($array 作为 $i => $k) {
a.brandon [at] chello [dot] nl
17年前
我将此用于准SQL orderby。松散地基于smileaf。对你们这些极客有用吗?

<?

函数 named_records_sort($named_recs, $order_by, $rev=false, $flags=0)
{// 创建仅包含
// 排序字段(而不是记录)值的单维命名数组
$named_hash = array();
循环遍历($named_recs 作为 $key=>$fields)
$named_hash["$key"] = $fields[$order_by];

// 对一维数组进行排序,
// 保持键值关系
如果($reverse) arsort($named_hash,$flags=0) ;
否则 asort($named_hash, $flags=0);

// 创建命名记录数组的副本
// 按排序数组的顺序
$sorted_records = array();
循环遍历($named_hash 作为 $key=>$val)
$sorted_records["$key"]= $named_recs[$key];

返回 $sorted_records;} // named_recs_sort()

函数 show_sorted_records($named_recs, $order_by, $rev=false, $flags=0)
{$sorted_records=named_records_sort($named_recs, $order_by, $rev, $flags);
循环遍历($sorted_records 作为 $name=>$fields)
{echo "<b>$name</b> ";
循环遍历($fields 作为 $field=>$val)
echo "$field = $val "; echo "<br>";}
} // show_sorted_records()

$girl_friends=array();
$girl_friends["Anna"]=
array("born"=>'1989-08-22',"cupsize"=>'B-',"IQ"=>105, "daddy"=>'rich');
$girl_friends["Zoe"]
=array("born"=>'1978-03-11',"cupsize"=>'C#',"IQ"=>130, "daddy"=>'poor');
$girl_friends["Lilly"]
=array("born"=>'1985-06-16',"cupsize"=>'DD',"IQ"=>90, "daddy"=>'nasty');

$order_by="cupsize"; echo "获胜者是: <br>";
show_sorted_records($girl_friends, $order_by, true);

?>
bwuhlman [at] tallships [dot] ca
24 年前
好吧,实际上,asort有两个烦人的特性。

它在排序哈希(或者你可能有的关联数组)方面工作得非常好,但却顽固地拒绝排序常规数组并保持索引关联。这有点道理,但是文档没有明确说明你不能这样做。

呃。
rick [at] toewsweb [dot] net
13 年前
关于首先按值排序,然后按键排序(参见,mike [at] clear-link [dot] com在2008年1月31日的笔记)

我想到解决这个问题的方法是将键和值提取到单独的数组中,然后使用array_multisort来获得所需的顺序

例如
<?php
$kvpairs
= array('noun' => 'thought', 'animal' => 'fish', 'abstract' => 'thought', 'food' => 'fish', 'verb' => 'fish');
print
"之前:\n";
print_r($kvpairs);

// 本质上,只需要一行代码就可以进行排序:
array_multisort(array_values($kvpairs), array_keys($kvpairs), $kvpairs);

print
"之后:\n";
print_r($kvpairs);
?>

之前
数组
(
[名词] => 思想
[动物] => 鱼
[抽象] => 思想
[食物] => 鱼
[动词] => 鱼
)
之后
数组
(
[动物] => 鱼
[食物] => 鱼
[动词] => 鱼
[抽象] => 思想
[名词] => 思想
)

当然,array_multisort允许你为传递给它的每个数组指定排序顺序(SORT_ASC,SORT_DESC)和排序类型(SORT_REGULAR,SORT_STRING,SORT_NUMERIC)。
phzzzt [at] acm [dot] org
22 年前
类似于上面,但用于数组的数组而不是对象的数组。

<?php
function aasort($x,$var,$cmp='strcasecmp'){
if (
is_string($var) ) $var = "\'$var\'";
uasort($x,
create_function('$a,$b',
'return '.$cmp.'( $a['.$var.'],$b['.$var.']);')
);
return
$x;
}
?>
[email protected]
6年前
我编写了这个函数,它可以根据指定的键对多维数组进行排序。

<?php
function sort_array($array, $sort_value, $reverse = false){
$value = $result = array();

foreach(
$array as $key => $rows){
$value[$key] = strtolower($rows[$sort_value]);
}

if(
$reverse == true){
arsort($value);
}else{
asort($value);
}

foreach(
$value as $keys => $null){
$result[] = $array[$keys];
}

return
$result;
}
?>

示例

<?php

$array
= array(array('a' => 'foo'), array('a' => 'foo4'), array('a' => 'foo2'), array('a' => 'foo3'));
print_r($array);
//Array ( [0] => Array ( [a] => foo ) [1] => Array ( [a] => foo4 ) [2] => Array ( [a] => foo2 ) [3] => Array ( [a] => foo3 ) )

print_r(sort_array($array, 'a'));
//Array ( [0] => Array ( [a] => foo ) [1] => Array ( [a] => foo2 ) [2] => Array ( [a] => foo3 ) [3] => Array ( [a] => foo4 ) )

print_r(sort_array($array, 'a', true));
//Array ( [0] => Array ( [a] => foo4 ) [1] => Array ( [a] => foo3 ) [2] => Array ( [a] => foo2 ) [3] => Array ( [a] => foo ) )

?>
[email protected]
16 年前
尊敬的 [email protected]

我需要一个不区分大小写的版本。它仍然不完美,因为我必须处理特定国家的字符 (öüóőúéáűíÖÜÓŐÚÉÁŰÍ)

function akisort(&$array,$valrev=false,$keyrev=false)
{
if ($valrev)
{
arsort($array);
}
else
{
asort($array);
};
$vals = array_count_values($array);
$i = 0;
foreach ($vals AS $val=>$num)
{
$first = array_splice($array,0,$i);
$tmp = array_splice($array,0,$num);
$tmp2 = array();
foreach($tmp as $key => $value)
{
$tmp2[] = $key;
$number = $value;
};
natcasesort($tmp2);
reset($tmp2);
print_r($tmp2);
unset($tmp);
foreach($tmp2 as $key => $value)
{
$tmp[$value] = $number;
};
if($keyrev)
{
$tmp = array_reverse($tmp, true);
};
$array = array_merge($first,$tmp,$array);
unset($tmp);
$i = $i+$num;
};
};
[email protected]
16 年前
我注意到我之前提到的函数非常具有误导性——请有人删除该注释!

这就是你排序的方法
<?php
setlocale
(LC_ALL, 'czech');
$array = array("a", "č", "c");
usort ($array, 'strcoll');
print_r($array);
?>
To Top