php - 在 php 或 mysql 中使用数字中的内部数组对数组进行排序

标签 php mysql sql sql-server sorting

我有一个这样的数组,

array[0][0],[1][0],[2][0] 是问题,array[0][1],[1][1],[2][1] 是问题这些问题的答案。
现在我想根据答案的数量对这个数组进行排序。
第一个问题只有一个答案,并且 第二个有两个答案,第三个有三个答案。
排序后的数组应根据该问题的答案数量降序排列。 无论如何在sql中实现这个?或者我们如何在 php 中排序?希望我的问题很清楚。先感谢您。

Array
(
    [0] => Array
        (
            [0] => Array
                (
                    [0] => 12
                    [1] => 110
                    [2] => Tom
                    [3] => Tom@gmail.com
                    [4] => Hello tom how are you?
                    [5] => 2013-01-03 14:54:07
                )

            [1] => Array
                (
                    [0] => Array
                        (
                            [0] => 12
                            [1] => Yes i am fine.
                            [2] => Arun
                            [3] => arun@gmail.com
                            [4] => 2013-01-03 14:55:22
                        )
                )
        )
    [1] => Array
        (
            [0] => Array
                (
                    [0] => 12
                    [1] => 110
                    [2] => Tom
                    [3] => Tom@gmail.com
                    [4] => Hello tom how are you.
                    [5] => 2013-01-03 14:54:07
                )

            [1] => Array
                (
                    [0] => Array
                        (
                            [0] => 12
                            [1] => Yes i am fine
                            [2] => Arun
                            [3] => arun@gmail.com
                            [4] => 2013-01-03 14:55:22
                        )
                    [1] => Array
                        (
                            [0] => 12
                            [1] => Yes i am fine
                            [2] => Arun
                            [3] => arun@gmail.com
                            [4] => 2013-01-03 14:55:22
                        )
                )
        )
    [2] => Array
        (
            [0] => Array
                (
                    [0] => 12
                    [1] => 110
                    [2] => Tom
                    [3] => Tom@gmail.com
                    [4] => Hello tom how are you.
                    [5] => 2013-01-03 14:54:07
                )
            [1] => Array
                (
                    [0] => Array
                        (
                            [0] => 12
                            [1] => Yes i am fine
                            [2] => Arun
                            [3] => arun@gmail.com
                            [4] => 2013-01-03 14:55:22
                        )
                    [1] => Array
                        (
                            [0] => 12
                            [1] => Yes i am fine
                            [2] => Arun
                            [3] => arun@gmail.com
                            [4] => 2013-01-03 14:55:22
                        )
                [2] => Array
                        (
                            [0] => 12
                            [1] => Yes i am fine
                            [2] => Arun
                            [3] => arun@gmail.com
                            [4] => 2013-01-03 14:55:22
                        )
                )
        )

最佳答案

这应该有效:

function cmp($a, $b)
{
    return count($a[1]) > count($b[1]) ? -1 : 1;
}

usort($data, 'cmp');

或者,如果您使用的是 PHP 5.3.0 或更高版本,您可以使用:

usort($data, function ($a, $b) {
    return count($a[1]) > count($b[1]) ? -1 : 1;
});

关于php - 在 php 或 mysql 中使用数字中的内部数组对数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14151726/

相关文章:

php - 我收到 laravel mysql [2002] 连接错误

php - Symfony 2.5 - 数据转换器和 View 转换器

php - 为 MySQL 唯一字段生成唯一值

sql - 如何修复此返回不正确值的 SQL 查询?

php - 当我只有父级的父级文本时如何获取 TreeView 项目的 id

php - PrestaShop,插入数据库时​​获取ID

mysql - 外键不是 "working"?

java - 我使用驱动程序 <com.mysql.cj.jdbc.Driver>,但 'junit test' 不断导致错误

mysql - 如何在一个查询中每天包含多个 COUNT?

java - 为什么 JPQL 生成的查询与原始查询不同