首页 > 解决方案 > PHP 在其他操作之前对数组进行排序

问题描述

为每个循环做,但数据乱序我尝试了几种变体,但无法对子数组进行排序


为每个循环运行这个

@foreach($record->criteria_list as $optKey=>$options)

我需要根据以下字段进行排序,并使主数组($record)在 for 循环之前排序

$options->total_passed_user

其他 9 个示例(我已经尝试过)和下面的 2 个示例是这些示例的一部分正在出错...页面不会加载....是的,它是刀片/laravel,但这并不重要,因为我试图对这个数组进行排序在循环和 phpformatting.page 加载并且所有代码正常工作之前,只是项目的顺序不合适,并试图根据 $options->total_passed_user 重新排序

@foreach($record->criteria_list as $optKey=>$options)

<?php
    $correctPercentage = ( $record->total_test_completed_count) ? round(($options->total_passed_user/$record->total_test_completed_count)*100):0;

ETC.......

标签: phpsorting

解决方案


我认为,usort功能会起作用。http://php.net/manual/en/function.usort.php


示例 1(在 PHP ≥7.0 中):推荐的解决方案

usort($record->criteria_list, function ($a, $b) {
    return $a->total_passed_user <=> $b->total_passed_user;
});

...

@foreach($record->criteria_list as $optKey=>$options)

示例 2:

function cmp_by_total_passed_user($a, $b) {
  return $a->total_passed_user - $b->total_passed_user;
}

...

usort($record->criteria_list, "cmp_by_total_passed_user");

....

@foreach($record->criteria_list as $optKey=>$options)

推荐阅读