按时间排序PHP

时间:2018-02-09 15:38:28

标签: php

我有这个功能sort_by_time,如果time1大于time2,此函数的目的是交换time1,但我的问题是我有错误未定义的偏移量:0 。有时错误是未定义的偏移量:1 。或未定义的偏移量:2 。有人可以帮我防止我的代码中出现此错误吗?我在过去的3天里都在考虑这个问题,但我无法想到任何解决方案。

在此行中发生错误。

      if (Payroll2::convert_time_in_minutes($_time[$j]->time_in) > Payroll2::convert_time_in_minutes($_time[$j+1]->time_in))

发生此错误是因为未设置$_time[0]

采样时间。这是动态的,不仅仅限于3有时它4,有时它只是51

  • 1 => {#6356}
  • 2 => {#6352}
  • 3 => {#6257}

    这是我的完整功能代码

    public static function sort_by_time($_time)
    {
        $count = 0;
    
    
        $n = count($_time);
        for ($i = 0; $i < $n-1; $i++)
        {
            for ($j = 0; $j < $n-$i-1; $j++)
            {
                if (Payroll2::convert_time_in_minutes($_time[$j]->time_in) > Payroll2::convert_time_in_minutes($_time[$j+1]->time_in))
                {
    
                    // swap temp and arr[i]
                    $temp = $_time[$j];
                    $_time[$j] = $_time[$j+1];
                    $_time[$j+1] = $temp;
    
                }
            }
        }
    
    
        return $_time;
    }
    

1 个答案:

答案 0 :(得分:1)

试试这个:

LayerDrawable stars = (LayerDrawable) yourRatingBar.getProgressDrawable();
stars.getDrawable(2).setColorFilter(Color.parseColor("#e7c31b"), PorterDuff.Mode.SRC_ATOP); // for filled stars
stars.getDrawable(1).setColorFilter(Color.parseColor("#e7c31b"), PorterDuff.Mode.SRC_ATOP); // for half filled stars
stars.getDrawable(0).setColorFilter(Color.parseColor("#c2c2c2"), PorterDuff.Mode.SRC_ATOP); // for empty stars

如果不起作用,则问题可能在函数public static function sort_by_time($_time) { usort($_time,function($ad,$bd) { $ad = Payroll2::convert_time_in_minutes($ad->time_in); $bd = Payroll2::convert_time_in_minutes($bd->time_in); if ($ad == $bd) { return 0; } return $ad < $bd ? -1 : 1; }); return $_time; }