php - 如何按键值对包含 stdClass 对象的多维数组进行排序?

标签 php arrays sorting

<分区>

是的,我搜索并尝试了很多技术,但似乎没有任何效果。这是我的数组:

Array
(
    [0] => stdClass Object
        (
            [id] => 119
            [name] => Business3
            [start_date] => 1338789600
            [end_date] => 1354604400
        )

    [1] => stdClass Object
        (
            [id] => 153
            [name] => Business1
            [start_date] => 1338962400
            [end_date] => 1370498400
        )

    [2] => stdClass Object
        (
            [id] => 135
            [name] => Business2  
            [start_date] => 1339653600
            [end_date] => 1356937200
        )
)

我基本上想按名称键对其进行排序,但我在 Stackoverflow 上尝试过的每个函数似乎都不起作用,因为我得到了一个没有错误的空白页面。

我试过这个:

function array_sort_by_column(&$arr, $col, $dir = SORT_ASC) {
    $sort_col = array();
    foreach ($arr as $key=> $row) {
        $sort_col[$key] = $row[$col];
    }

    array_multisort($sort_col, $dir, $arr);
}

array_sort_by_column(json_decode(json_encode($businesses), true), 'name');

但这没有用。

有什么想法吗?

最佳答案

您几乎是对的,但是 $row[$col] 试图像访问数组一样访问对象。您需要像 $row->{$col} 这样的东西。这是一个更简单的工作示例:

$db = array(
  0 => (object) array('name' => 'Business3'),
  1 => (object) array('name' => 'Business2'),
  2 => (object) array('name' => 'Business1')
);

$col  = 'name';
$sort = array();
foreach ($db as $i => $obj) {
  $sort[$i] = $obj->{$col};
}

$sorted_db = array_multisort($sort, SORT_ASC, $db);

print_r($db);

输出:

Array
(
    [0] => stdClass Object
        (
            [name] => Business1
        )

    [1] => stdClass Object
        (
            [name] => Business2
        )

    [2] => stdClass Object
        (
            [name] => Business3
        )

)

关于php - 如何按键值对包含 stdClass 对象的多维数组进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11023576/

相关文章:

php - Codeigniter 回显 [::1] 而不是 localhost

php - mysql 和 mysqli 的问题

arrays - 将文件读入 d 中的行数组

Java:从缓冲图像中获取 RGBA 作为整数数组

java - 冒泡排序比较计数始终相同

java - TreeMap<int[],Double> 初始化并按值排序

php - 在生产环境中部署发布的最佳实践

C++ 结构中未调整大小的数组,错误 : "too many initializers"

c - Bitonicsort C 代码分割问题

php - 如何使用 PHP 运行 PostgreSQL LIKE 查询