关于PHP中array_multisort函数的问题

<?php$ar=array(array("10",11,100,100,"a"),array(1,2,"2",3,1));array_multisort($ar[0],... <?php
$ar = array(
array("10", 11, 100, 100, "a"),
array( 1, 2, "2", 3, 1)
);
array_multisort($ar[0], SORT_ASC, SORT_STRING,
$ar[1],
SORT_NUMERIC, SORT_DESC);
var_dump($ar);
?>

本例中在排序后,第一个数组将变成 "10",100,100,11,"a"(被当作字符串以升序排列)。第二个数组将包含 1, 3, "2", 2,
1(被当作数字以降序排列)。
第一个数组按照字符串升序排列怎么就成"10",100,100,11,"a",SORT_STRING不是按照字母排序吗
展开
 我来答
ixyqq_net
2014-09-11 · TA获得超过888个赞
知道小有建树答主
回答量:1160
采纳率:0%
帮助的人:1282万
展开全部
<?php
$a=array("10",100,100,"a");
$b=array(1,3,"2",1);
array_multisort($a,SORT_ASC,SORT_STRING);
array_multisort($b,SORT_DESC,SORT_NUMERIC);
echo "<pre>";
var_dump($a);
var_dump($b);
echo "</pre>";
?>

 SORT_STRING   是按照字母排序啊,不是按照字符串排序,是字母 a 是才字符 10字符串不算的。

array_multisort($a,SORT_ASC,SORT_STRING);   按升序排列   所以 a字母是最后的啊

你可以改 

array_multisort($a,SORT_DESC,SORT_STRING);  这样 a 就是降序排列  出现一个了

追问
那前面的"10",100,100,11是怎么按照字母排序出来的
追答
SORT_STRING    是按照字母排序,
数字的字符串 和 数字 是按 整形数字->数字字符串 排序

SORT_REGULAR - 默认。将每一项按常规顺序排列。
SORT_NUMERIC - 将每一项按数字顺序排列。
SORT_STRING - 将每一项按字母顺序排列。
不好好看文档,你这问题问了2遍了,你理解能力真有问题。
百度网友690c81e14
2014-09-11 · TA获得超过635个赞
知道小有建树答主
回答量:680
采纳率:0%
帮助的人:667万
展开全部
这就是按照字母排序的,首先,PHP是弱类型语言,数字和字符串区别不大,可以混排

排序时,每个字符从左到右比较0在1前面, 空在0前面,所以就出现了以上的结果
如果你是按数字大小排的话,应该用SORT_NUMERIC
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式