标签: array-multisort

如何在PHP中对多个数组进行排序

我写了一个脚本来生成一个数据数组,但现在想要按分数顺序显示.阵列输出如下;

[display_name] => Array
    (
        [0] => ACT_Web_Designs
        [1] => user1_design
        [2] => user2_design
    )

[proffesion] => Array
    (
        [0] => Web Developer
        [1] => web developer
        [2] => Web Developer
    )

[score] => Array
    (
        [0] => 15
        [1] => 6
        [2] => 15
    )

[img] => Array
    (
        [0] => ./?0000=gif&0001=3fadb8c362ff39f3322909899ff14760&0002=prof_pic
        [1] => 
        [2] => 
    )
Run Code Online (Sandbox Code Playgroud)

所以简而言之,我希望它按照以下方式进行转换;

    [display_name] => Array
    (
        [0] => ACT_Web_Designs
        [1] => user2_design
        [2] => user1_design
    )

[proffesion] => Array
    (
        [0] => Web …
Run Code Online (Sandbox Code Playgroud)

php arrays sorting multidimensional-array array-multisort

6
推荐指数
1
解决办法
2338
查看次数

PHP array_multisort - 如何保持键值?

如何对多维数组进行深度排序并保留其键?

$array = [
    '2' => [
        'title' => 'Flower',
        'order' => 3
    ],
    '3' => [
        'title' => 'Rock',
        'order' => 1
    ],
    '4' => [
        'title' => 'Grass',
        'order' => 2
    ]
];

foreach ($array as $key => $row) {
    $items[$key]  = $row['order'];
}

array_multisort($items, SORT_DESC, $array);

print_r($array);
Run Code Online (Sandbox Code Playgroud)

结果:

Array
(
    [0] => Array
        (
            [title] => Flower
            [order] => 3
        )

    [1] => Array
        (
            [title] => Grass
            [order] => 2
        )

    [2] => Array
        (
            [title] …
Run Code Online (Sandbox Code Playgroud)

php multidimensional-array array-multisort

6
推荐指数
2
解决办法
5546
查看次数

array_multisort,保持数字索引关联

我可以对多维数组进行排序,但不保持数字索引关联.

如何保持数字索引关联?

码:

$waiters[76] = array('weight' => 67, 'specialties' => 1);
$waiters[14] = array('weight' => 41, 'specialties' => 2);
$waiters[58] = array('weight' => 85, 'specialties' => 3);
$waiters[89] = array('weight' => 98, 'specialties' => 4);
$waiters[68] = array('weight' => 86, 'specialties' => 5);
$waiters[31] = array('weight' => 13, 'specialties' => 6);
print_r($waiters);
// Obtain a list of waiters
foreach ($waiters as $id => $waiter) {
    $weight[$id]        = $waiter['weight'];
    $specialties[$id]   = $waiter['specialties'];

}

// Sort the data with weight descending, specialties …
Run Code Online (Sandbox Code Playgroud)

php arrays array-multisort

5
推荐指数
2
解决办法
3293
查看次数

如果日期相等,则 Array_multisort 失败

我正在使用yii框架并使用,CArrayDataProvider因为我的数据提供程序包含 3 个表。但是如果我Sort在这个中使用。

$sort = new CSort;
        $sort->defaultOrder = 'created DESC';
        $dataProvidermain=new CArrayDataProvider($data, array(
            'id'=>'user',
            'sort' => $sort,
            'pagination'=>array(
                'pageSize'=>20,
            ),
        ));
Run Code Online (Sandbox Code Playgroud)

它正在抛出错误

致命错误:嵌套级别太深 - 递归依赖?在第 151 行的 /var/www/goalsurf/framework/web/CArrayDataProvider.php

调试后,我知道当 2 个或更多元素的日期相等时,它会抛出此错误。我有三个具有相同日期的实体。2016-02-06 10:10:51. 如果我更改 2 条记录的日期,则它正在工作。试图从过去 2 天解决这个问题。谷歌搜索,但没有解决方案。

请帮帮我。

更新 这是数组格式

[68] => Tasks Object
        (
            [taskmodel] => 1
            [quickacent] => 15
            [dailygoal] => 
            [weeklygoal] => 
            [dailygoal2] => 
            [_new:CActiveRecord:private] => 
            [_attributes:CActiveRecord:private] => Array
                (
                    [id] => 563
                    [guid] => 650c7572-3fae-4f9a-a476-8de6a21c329e
                    [user_id] => …
Run Code Online (Sandbox Code Playgroud)

php arrays multidimensional-array yii array-multisort

5
推荐指数
1
解决办法
402
查看次数

通过不是第一个维度的数值对多维数组进行排序

我正在为我正在构建的论坛程序创建搜索功能.有一次,我有一个名为searchResults的数组,它是一个数字,包含'score'作为其维度之一(其他是'timeStarted','authorUID'和'TID')

所以,这个数组现在处于混乱状态,我需要将它组织到$ searchResults [1]将是最高'得分',[2]将具有第二高等等.我在php.net上查看了array_multisort但它在如何运作方面迅速迷失.那么我如何按照数字顺序(重新排列键)对$ searchResults进行排序,以另一个维度'sort'的降序作为排序机制降序?确实没有任何代码可以使用它但是如果你需要一个阵列外观的布局,你可以去:

$searchResults:
   [1] - ['timeStarted']
         ['authorUID']
         ['score']   <- Need to sort first dimension by this value descending
         ['TID']
   etc.
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助.

php sorting dimensions multidimensional-array array-multisort

3
推荐指数
1
解决办法
3770
查看次数

php按值对数组进行排序,对于相等的值,按键排序

我有一个阵列

(0=>0,1=>3,2=>3)
Run Code Online (Sandbox Code Playgroud)

我必须首先按值排序这个数组,对于相等的值,我必须先按增加键的顺序排序.

我试图分别在array_keys(SORT_DESC)和array_values(SORT_ASC)上使用multisort,但这给了我:

(0=>0,1=>3,2=>3)
Run Code Online (Sandbox Code Playgroud)

但我想要

(0=>0,2=>3,1=>3)
Run Code Online (Sandbox Code Playgroud)

php sorting array-multisort

2
推荐指数
1
解决办法
1674
查看次数