yeah

搜索

计数器

62865

链接

JavaScript语法中12个需要绕开的陷阱

数组排序sort asort arsort ksort krsort usort的区别

yeah posted @ Jan 07, 2010 09:33:43 PM in PHP学习 , 2755 阅读

asort

本函数对数组进行排序,数组的索引保持和单元的关联。主要用于对那些单元顺序很重要的结合数组进行排序。

如果成功则返回 TRUE,失败则返回 FALSE

例子 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

fruits 被按照字母顺序排序,并且单元的索引关系不变。

arsort

本函数对数组进行逆向排序,数组的索引保持和单元的关联。主要用于对那些单元顺序很重要的结合数组进行排序。

如果成功则返回 TRUE,失败则返回 FALSE

例子 1. arsort() 例子

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

上例将输出:

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

fruits 被按照字母顺序逆向排序,并且单元的索引关系不变

sort

说明
bool sort ( array &array [, int sort_flags] )

本函数对数组进行排序。当本函数结束时数组单元将被从最低到最高重新安排。

注: 本函数为 array 中的单元赋予新的键名。这将删除原有的键名而不仅是重新排序。

如果成功则返回 TRUE,失败则返回 FALSE

例子 1. sort() 例子

<?php

$fruits
= array("lemon", "orange", "banana", "apple"
);
sort($fruits
);
foreach (
$fruits as $key => $val
) {
     echo
"fruits[".$key."] = " . $val . "\n"
;
}

?>

上例将输出:

fruits[0] = apple fruits[1] = banana fruits[2] = lemon fruits[3] = orange

fruits 被按照字母顺序排序。

可选的第二个参数 sort_flags 可以用以下值改变排序的行为:

排序类型标记:

  • SORT_REGULAR - 正常比较单元(不改变类型)

  • SORT_NUMERIC - 单元被作为数字来比较

  • SORT_STRING - 单元被作为字符串来比较

     SORT_LOCALE_STRING - 根据当前的 locale 设置来把单元当作字符串比较。

rsort

bool rsort ( array &array [, int sort_flags] )

本函数对数组进行逆向排序(最高到最低)。

注: 本函数为 array 中的单元赋予新的键名。这将删除原有的键名而不仅是重新排序。

如果成功则返回 TRUE,失败则返回 FALSE

例子 1. rsort() 例子

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

上例将输出:

0 = orange 1 = lemon 2 = banana 3 = apple

fruits 被按照字母顺序逆向排序

ksort

对数组按照键名排序,保留键名到数据的关联。本函数主要用于关联数组。

如果成功则返回 TRUE,失败则返回 FALSE

例子 1. ksort() 例子

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

上例将输出:

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

krsort

对数组按照键名逆向排序,保留键名到数据的关联。主要用于结合数组。

如果成功则返回 TRUE,失败则返回 FALSE

例 1. krsort() 例子

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

上例将输出:

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

usort

本函数将用用户自定义的比较函数对一个数组中的值进行排序。如果要排序的数组需要用一种不寻常的标准进行排序,那么应该使用此函数。

比较函数必须在第一个参数被认为小于,等于或大于第二个参数时分别返回一个小于,等于或大于零的整数。

注: 如果两个成员比较结果相同,则它们在排序后的数组中的顺序未经定义。到 PHP 4.0.6 之前,用户自定义函数将保留这些单元的原有顺序。但是由于在 4.1.0 中引进了新的排序算法,结果将不是这样了,因为对此没有一个有效的解决方案。

注: 本函数为 array 中的单元赋予新的键名。这将删除原有的键名而不仅是重新排序。

如果成功则返回 TRUE,失败则返回 FALSE

例子 1. usort() 例子

<?php
function cmp($a, $b
)
{
     if (
$a == $b
) {
         return
0
;
     }
     return (
$a < $b) ? -1 : 1
;
}

$a = array(3, 2, 5, 6, 1
);

usort($a, "cmp"
);

foreach (
$a as $key => $value
) {
     echo
"$key: $value\n"
;
}
?>

上例将输出:

0: 1 1: 2 2: 3 3: 5 4: 6

注: 很明显在这个小例子中用 sort() 函数更合适。

例子 2. 使用多维数组的 usort() 例子

<?php
function cmp($a, $b
)
{
     return
strcmp($a["fruit"], $b["fruit"
]);
}

$fruits[0]["fruit"] = "lemons"
;
$fruits[1]["fruit"] = "apples"
;
$fruits[2]["fruit"] = "grapes"
;

usort($fruits, "cmp"
);

while (list(
$key, $value) = each($fruits
)) {
     echo
"\$fruits[$key]: " . $value["fruit"] . "\n"
;
}
?>

当排序多维数组时,$a 和 $b 包含到数组第一个索引的引用。

上例将输出:

$fruits[0]: apples $fruits[1]: grapes $fruits[2]: lemons

例子 3. 使用对象的成员函数的 usort() 例子

<?php
class TestObj
{
     var
$name
;

     function
TestObj($name
)
     {
        
$this->name = $name
;
     }

    
/* This is the static comparing function: */
    
function cmp_obj($a, $b
)
     {
        
$al = strtolower($a->name
);
        
$bl = strtolower($b->name
);
         if (
$al == $bl
) {
             return
0
;
         }
         return (
$al > $bl) ? 1 : -1
;
     }
}

$a[] = new TestObj("c"
);
$a[] = new TestObj("b"
);
$a[] = new TestObj("d"
);

usort($a, array("TestObj", "cmp_obj"
));

foreach (
$a as $item
) {
     echo
$item->name . "\n"
;
}
?>

上例将输出:

b c d

Things to do 说:
Sep 30, 2022 04:39:52 PM

What are the trending destinations in France at the present? We can easily find all info on Things to do post with detailed article.


登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter