标签: ksort

按特定键对多维数组进行排序

我有一个数组:

Array (
    [0] => stdClass Object (
        [user_id] => 1
        [ID] => 1
        [user_login] => admin
        [display_name] => admin
        [user_email] => webbinformation@nacka.se
        [meta_value] => a:1:{s:13:\"administrator\";s:1:\"1\";}
    )
    [1] => stdClass Object (
        [user_id] => 4
        [ID] => 4
        [user_login] => ungtinflytande
        [display_name] => ungtinflytande
        [user_email] => klarakviberg@gmail.com
        [meta_value] => a:1:{s:13:\"administrator\";s:1:\"1\";}
    )
    [2] => stdClass Object (
        [user_id] => 5
        [ID] => 5
        [user_login] => inflytandepilot
        [display_name] => inflytandepilot
        [user_email] => hildalundgren@hotmail.com
        [meta_value] => a:1:{s:6:\"author\";s:1:\"1\";}
    )
    [3] => stdClass Object ( …
Run Code Online (Sandbox Code Playgroud)

php sorting ksort

31
推荐指数
3
解决办法
4万
查看次数

有没有办法选择ksort的排序?像ASC,DESC

我有一个用途ksort(),我需要选择排序顺序(ASC/DESC).

有没有办法做到这一点 array_multisort()

php ksort

26
推荐指数
2
解决办法
2万
查看次数

处理字母数字字符时,ksort产生错误的结果

<?php

    $a = array(
        'a'=>'7833',
        'd'=>'1297',
        'c'=>'341',
        '1'=>'67',
        'b'=>'225',
        '3'=>'24',
        '2'=>'44',
        '4'=>'22',
        '0'=>'84'
    );

    ksort($a);

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

上面的代码产生以下输出.

Array
(
    [0] => 84
    [a] => 7833
    [b] => 225
    [c] => 341
    [d] => 1297
    [1] => 67
    [2] => 44
    [3] => 24
    [4] => 22
)
Run Code Online (Sandbox Code Playgroud)

为什么ksort会给出错误的结果?

php sorting ksort

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

排序PHP数组中的列

我试图按照以下数据结构中的列进行排序:

 $counter = 1;
 $entity_list = array();

 foreach($result as $rec){
   $entity_list[$counter]['student_first_name'] = $rec->firstname;
   $entity_list[$counter]['student_last_name'] = $rec->lastname;
   $entity_list[$counter]['course_name'] = $rec->fullname;
   .
   .
   $counter++;
 }//end foreach
Run Code Online (Sandbox Code Playgroud)

这是$ entity_list数据结构的var_dump.

array (size=150)     
  1 => 
  array (size=3)
    'student_first_name' => string 'Jane' (length=6)
    'student_last_name' => string 'Smith' (length=7)
    'course_name' => string 'Algebra 1A-MOD' (length=14)

  2 => 
  array (size=3)
    'student_first_name' => string 'Fred' (length=6)
    'student_last_name' => string 'Jones' (length=7)
    'course_name' => string 'Algebra 1A-MOD' (length=14)
   .
   .
   .
Run Code Online (Sandbox Code Playgroud)

如何在此结构上使用asort()或ksort()?我想我应该使用kso​​rt(),因为它适用于密钥.我曾尝试过ksort($ entity_list,'student_last_name')或asort($ entity_list,'current_grade').

谢谢.

php arrays asort ksort

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

按数字键对数组进行排序

我想以数字方式对数组进行排序,即188,188-1,188-2,222,222-1,222,-2等.这就是数组当前的样子:

[188-1] => Array
    (
        [time] => 1
    )

[188-2] => Array
    (
        [time] => 2
    )

[188-3] => Array
    (
        [time] => 3
    )

[188] => Array
    (
        [notes] => frog stand notes
    )

[489] => Array
    (
        [notes] => notes
    )

[489-1] => Array
    (
        [weight] => 10
        [reps] => 30
    )

[489-2] => Array
    (
        [weight] => 20
        [reps] => 30
    )

[489-3] => Array
    (
        [weight] => 30
        [reps] => 30
    )

[492-1] => Array
    ( …
Run Code Online (Sandbox Code Playgroud)

php arrays array-key ksort

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

同时使用 Laravel 强制转换和修改器

这是我的角色模型的一部分:

namespace App;

use App\Traits\Permissions;
use Illuminate\Database\Eloquent\Model;

class Role extends Model
{
    use Permissions;

    /**
     * {@inheritDoc}
     */
    protected $casts = [
        'permissions' => 'array',
    ];
}
Run Code Online (Sandbox Code Playgroud)

这是我的权限特性:

namespace App\Traits;

trait Permissions
{
    public function setPermissionsAttribute($permissions)
    {
        ksort($permissions);

        $this->attributes['permissions'] = $permissions;
    }
    /**
     * Adds a permission.
     *
     * @param  string $permission
     * @param  bool $value
     * @return void
     */
    public function addPermission($permission, $value = true)
    {
        if (!array_key_exists($permission, $this->getAttribute('permissions'))) {
            $this->setAttribute('permissions', array_merge($this->getAttribute('permissions'), [$permission => $value]));
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

这将引发以下异常: …

php attributes mutators ksort laravel

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

在C#中模仿PHP的ksort

我从没想过我会问这个...我需要一种方法来模仿PHP ksort在C#中的功能.

这是问题...... PHP这样做......

PHP代码

$arr = array(
    "tagValues" => "asdfasd",
    "email" => "asdfasd",
    "referrer" => "asdfasd",
    "tags" => "asdfasd",
);

echo "Base array \n\n";
print_r($arr);

ksort($arr);

echo "\n\nksort'ed array \n\n";
print_r($arr);
Run Code Online (Sandbox Code Playgroud)

PHP输出

Base array 

Array
(
    [tagValues] => asdfasd
    [email] => asdfasd
    [referrer] => asdfasd
    [tags] => asdfasd
)


ksort'ed array 

Array
(
    [email] => asdfasd
    [referrer] => asdfasd
    [tagValues] => asdfasd
    [tags] => asdfasd
)
Run Code Online (Sandbox Code Playgroud)

如果我在C#中这样做...

string[] sortedKeys = form.AllKeys.OrderBy(x => x).ToArray();
Run Code Online (Sandbox Code Playgroud)

它以不同的顺序出现.tags将在以前tagValues,因为它应该是正确的.这是真正的字母顺序. …

php c# linq ksort

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

如何反向排序这个数组,WordPress自定义搜索过滤器

我正在使用WordPress中的自定义过滤器,只需要按相反的顺序帮助排序这个数组:

add_filter('relevanssi_hits_filter', 'order_the_results');

function order_the_results($hits) {
global $wp_query;
if ($wp_query->query_vars['orderby'] == 'likes') {
    $likes = array();
    foreach ($hits[0] as $hit) {
        $likecount = get_post_meta($hit->ID, '_likes', true);
        if (!isset($likes[$likecount])) $likes[$likecount] = array();
        array_push($likes[$likecount], $hit);
    }
    ksort($likes);
    $sorted_hits = array();
    foreach ($likes as $likecount => $year_hits) {
        $sorted_hits = array_merge($sorted_hits, $year_hits);
    }
    $hits[0] = $sorted_hits;
}
return $hits;
}
Run Code Online (Sandbox Code Playgroud)

我对ksort不太熟悉,但似乎没有ASC/DESC选项.

wordpress ksort

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

递归 ksort :不对数组进行排序

我有一个问题所以我有这个数组:

Array
(
[2016] => Array
    (
        [23] => Array
            (
                [total_auctions] => 0
                [total_price] => 0
            )

        [22] => Array
            (
                [total_auctions] => 0
                [total_price] => 0
            )

        [21] => Array
            (
                [total_auctions] => 0
                [total_price] => 0
            )

        [20] => Array
            (
                [total_auctions] => 0
                [total_price] => 0
            )
)
Run Code Online (Sandbox Code Playgroud)

我想按键对递归进行排序。所以我创建了方法:

 public function sortNestedArrayAssoc($a)
{
    if (!is_array($a)) {
        return false;
    }
    ksort($a);
    foreach ($a as $k=>$v) {
        $this->sortNestedArrayAssoc($a[$k]);
    }
    return true;
}
Run Code Online (Sandbox Code Playgroud)

但是我得到了相同的结果,带有键的数组23是第一个,我真的不明白问题出在哪里。你能帮我吗 ?提前感谢并为我的英语感到抱歉

php ksort php-5.3 php-5.5

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

对关联数组进行排序

我有一个关联的格式数组

[Article_title_1] => Array
        (
            [description] => Trial
            [created] => date
        )
[Article_title_2] => Array
        (
            [description] => Trial
            [created] => date
        )
Run Code Online (Sandbox Code Playgroud)

我想按字母顺序(按标题)对数组进行排序,其中Article_title_2是文章的标题.

我试过ksort.这是行不通的.我试图使用cakephp的设置排序,也无法让它工作.

我感谢任何帮助.

谢谢.

php arrays sorting cakephp ksort

0
推荐指数
1
解决办法
633
查看次数

PHP 按字母顺序然后按数字对数组键进行排序

我正在尝试按键对数组(同时包含字母和数字键)进行排序,其中字母键将按字母顺序排列在前,然后按数字键排列。

尝试了ksort所有可用的标志,但这没有帮助。尝试了几个SO答案,但没有一个达到我的目的。这是我拥有的数组的示例..

$array = array(
    'Bat' => array(),
    'Dog' => array(),
    'Apple' => array(),
    'Cat' => array(),
    1 => array(),
    3 => array(),
    2 => array(),
    4 => array()
);  
Run Code Online (Sandbox Code Playgroud)

我需要这样排序:

$array = array(
    'Apple' => array(),
    'Bat' => array(),
    'Cat' => array(),
    'Dog' => array(),
    0 => array(),
    1 => array(),
    2 => array(),
    3 => array()
);  
Run Code Online (Sandbox Code Playgroud)

我从 SO 答案中了解到,它可能需要一个自定义函数来使用该usort函数进行排序。这就是我迷失的地方。任何有关正确方向的帮助或指导将不胜感激。

谢谢

php arrays sorting usort ksort

0
推荐指数
1
解决办法
4410
查看次数

ksort似乎不起作用

echo '<pre>'.print_r($listings,1).'</pre>';

ksort($listings, SORT_NUMERIC);

echo '<pre>'.print_r($listings,1).'</pre>';
Run Code Online (Sandbox Code Playgroud)

输出:

Array
(
    [quick-brown-fox] => Array
        (
            [0] => Quick-brown-fox
            [1] => quick-brown-fox
            [4] => general_thumbs/quick-brown-fox.jpg
            [2] => 320
            [3] => 240
        )

)

Array
(
    [quick-brown-fox] => Array
        (
            [0] => Quick-brown-fox
            [1] => quick-brown-fox
            [4] => general_thumbs/quick-brown-fox.jpg
            [2] => 320
            [3] => 240
        )

)
Run Code Online (Sandbox Code Playgroud)

我试过了foreach,但是它不会影响原始数组,for也不会起作用,因为它是键,而不是索引。在这种情况下我该怎么办?

php ksort

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

标签 统计

ksort ×12

php ×11

arrays ×4

sorting ×4

array-key ×1

asort ×1

attributes ×1

c# ×1

cakephp ×1

laravel ×1

linq ×1

mutators ×1

php-5.3 ×1

php-5.5 ×1

usort ×1

wordpress ×1