如何在 php 中对以下数组/stdclass 对象进行排序? [复制]

Posted

技术标签:

【中文标题】如何在 php 中对以下数组/stdclass 对象进行排序? [复制]【英文标题】:how do i sort the following array/stdclass object in php? [duplicate] 【发布时间】:2011-01-09 22:40:28 【问题描述】:

如何在 php 中通过 'pos' 对这个对象进行排序?

Array ( 
[0] => stdClass Object ( [str] => Mondays [pos] => 170 ) 
[1] => stdClass Object ( [str] => Tuesdays [pos] => 299 )
[2] => stdClass Object ( [str] => Wednesdays [pos] => 355 )
[3] => stdClass Object ( [str] => Thursdays [pos] => 469 )
[4] => stdClass Object ( [str] => Fridays [pos] => 645 )
[5] => stdClass Object ( [str] => Mondays [pos] => 972 )
[6] => stdClass Object ( [str] => Tuesdays [pos] => 1033 ) 
[7] => stdClass Object ( [str] => Thursdays [pos] => 1080 )
[8] => stdClass Object ( [str] => Fridays [pos] => 1180 ) 

)

【问题讨论】:

你想按什么对数组进行排序?字符串?位置? 【参考方案1】:

您可能可以使用usort() 系列函数在strpos 上对其进行排序。您必须为此定义自己的比较函数。

伪 PHP 示例:

function compareItems($a, $b)

    if ( $a->pos < $b->pos ) return -1;
    if ( $a->pos > $b->pos ) return 1;
    return 0; // equality


uasort($yourArray, "compareItems");

根据您的需要,other comparison functions 可能更合适。

【讨论】:

【参考方案2】:

试试这个功能

function objSort(&$objArray,$indexFunction,$sort_flags=0) 
    $indices = array();
    foreach($objArray as $obj) 
        $indeces[] = $indexFunction($obj);
    
    return array_multisort($indeces,$objArray,$sort_flags);

【讨论】:

或许稍微解释一下会有帮助?

以上是关于如何在 php 中对以下数组/stdclass 对象进行排序? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

php stdClass 到数组

PHP------数组和对象相互转化,stdClass Object转array

PHP------数组和对象相互转化,stdClass Object转array

PHP的stdClass

如何在 PHP 中对日期数组进行排序

如何在 PHP 中对多维数组进行排序 [重复]