php-为什么/如何使用array_multisort()?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了php-为什么/如何使用array_multisort()?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2018字,纯文字阅读大概需要3分钟。
内容图文
![php-为什么/如何使用array_multisort()?](/upload/InfoBanner/zyjiaocheng/692/2f9881623b884e728de3fbd61511e688.jpg)
码:
<?php
$data = array(
'uid3' => array(
'name' => 'Unique ID 3',
'count' => 11
),
'uid1' => array(
'name' => 'Unique ID 1',
'count' => 11
),
'uid2' => array(
'name' => 'Unique ID 2',
'count' => 15
),
'uid4' => array(
'name' => 'Unique ID 4',
'count' => 13
)
);
$counts = array_map( function( $v ){
return $v[ 'count' ];
}, $data );
$names = array_map( function( $v ){
return $v[ 'name' ];
}, $data );
print_r( $counts );
print_r( $names );
array_multisort(
$counts, SORT_DESC, SORT_NUMERIC,
$names, SORT_ASC, SORT_STRING,
$data
);
print_r( $data );
输出:
// $counts
Array
(
[uid3] => 11
[uid1] => 11
[uid2] => 15
[uid4] => 13
)
// $names
Array
(
[uid3] => Unique ID 3
[uid1] => Unique ID 1
[uid2] => Unique ID 2
[uid4] => Unique ID 4
)
// $data after sorting
Array
(
[uid2] => Array
(
[name] => Unique ID 2
[count] => 15
)
[uid4] => Array
(
[name] => Unique ID 4
[count] => 13
)
[uid1] => Array
(
[name] => Unique ID 1
[count] => 11
)
[uid3] => Array
(
[name] => Unique ID 3
[count] => 11
)
)
题:
array_multisort()如何知道将$counts的排序结果应用于多维数组$data中每个项目的count子项?
同样,对于$names到name子项.
奖金:
如果在函数调用中注释了$names,SORT_ASC,SORT_STRING,则uid3仍在uid1之后结束.为什么?
我一直在阅读以下资源,但无法确定如何将其应用于我的示例:
http://php.net/manual/en/function.array-multisort.php
解决方法:
我不想将其发布为答案,但是我只需要几个额外的字符.
我不能确切地说它是如何在技术上做到这一点的,但是我想专门解决“ array_multisort()如何知道将$counts的排序结果应用于count子键”,答案是“它没有“T”.更改子项,您将获得相同的结果.也许我不是按照您的预期来阅读您的问题,但似乎您是在询问如何查看$data的子键值然后进行排序.但事实并非如此.它查看$names的排序方式(查看$counts的排序方式)并将相同的排序应用于$data的主键.这意味着它将查看将原来的位置移到了新的位置.您的第一个数组是由一个子键的值组成的,而第二个数组是由另一个子键的值组成的事实是无关紧要的.以相同的顺序手工构建这些数组,您将获得相同的结果.
对于奖金,我想说这与“如果两个成员比较相等,则它们在排序数组中的相对顺序未定义”有关.因此,这比其他任何事情都更是巧合.
内容总结
以上是互联网集市为您收集整理的php-为什么/如何使用array_multisort()?全部内容,希望文章能够帮你解决php-为什么/如何使用array_multisort()?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。