-2

如果我有一个包含这样的对象的数组:

Array
(
    [0] => stdClass Object
        (
            [img] => image1.jpg
            [order] => 1
        )

    [1] => stdClass Object
        (
            [img] => image2.jpg
            [order] => 3
        )

    [2] => stdClass Object
        (
            [img] => image3.jpg
            [order] => 2
        )

    [3] => stdClass Object
        (
            [img] => image4.jpg
            [order] => 4
        )
)

然后如何按对象“顺序”值对数组进行排序?在这种情况下,顺序应该是:image1.jpg、image3.jpg、image2.jpg、image4.jpg。

4

3 回答 3

1

这是您的代码的示例:

function sortImage($a, $b)
{
    if ($a->img == $b->img) {
        return 0;
    }
    return ($a->img < $b->img) ? -1 : 1;
}


usort($youArray, "sortImage");

编辑:在您的情况下,您有 order 属性,但 php 也可以比较“image1”和“image2”字符串

于 2013-06-05T15:41:12.103 回答
0

你应该使用这个函数: http: //php.net/manual/en/function.usort.php

您必须编写一个比较函数,用作usort.

于 2013-06-05T15:34:02.433 回答
0

PHP 5.3+

usort($myArray, function ($a, $b) {
    if ($a->order == $b->order) {
        return 0;
    }
    return ($a->order < $b->order) ? -1 : 1;
});

对于 < PHP 5.3,只需将匿名函数更改为预定义的命名函数。

于 2013-06-05T15:41:33.090 回答