【问题标题】:How to sort associative array by specific order array keys?如何按特定顺序数组键对关联数组进行排序?
【发布时间】:2020-06-03 03:56:36
【问题描述】:

我正在我的抽象类中初始化一个数组。

我想动态地对这个关联数组进行排序,因为当我将它导出为 Excel 工作表文件时,数组索引位置会产生影响。

public function setExportDetailsData() {
    $headers['barcode']            = Lang::get('core::label.barcode');
    $headers['stockNo']            = Lang::get('core::label.stock.no');
    $headers['productName']        = Lang::get('core::label.product.name');
    $headers['chineseName']        = Lang::get('core::label.chinese.name');
    $headers['category']           = Lang::get('core::label.category');
    $headers['discount2']          = Lang::get('core::label.discount.2');
    $headers['discount3']          = Lang::get('core::label.discount.3');
    $headers['discount4']          = Lang::get('core::label.discount.4');
    $headers['amount']             = Lang::get('core::label.amount');
    $headers['remarks']            = Lang::get('core::label.remarks');
}

我需要根据页面/模块排序更改它的顺序。

例如,页面/模块 1 的排序顺序:

$sorting = [
    'stockNo',
    'barcode',
    'chineseName',
    'productName',
    'category',
    'discount2',
    'discount3',
    'discount4',
    'amount',
    'remarks'
];

并且对于其他页面/模块有不同的页面排序。

我只想根据页面/模块对这个关联数组进行动态排序。

【问题讨论】:

标签: php arrays laravel associative-array


【解决方案1】:
  1. 使用array_flip 创建一个包含每列得分的数组:
$scores = array_flip($sorting);
  1. 然后使用sortBy 按该分数排序:
return collect($headers)->sortBy(fn ($value, $key) => $scores[$key])->all();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多