使用对象从数组中的当前月份排序


Sorting months from current in array with objects

这是我的数组:

阵列 (
[0] => stdClass 对象 ( [id] => 64 [名称] => 一月 [别名] => 一月 [描述] => 01)
[0] => stdClass 对象 ( [id] => 64 [名称] => 一月 [别名] => 一月 [描述] => 01)
[1] => 标准类对象 ( [id] => 65 [名称] => 二月 [别名] => 二月 [描述] => 02)
...

我怎么能从本月开始排序,然后自然的方式,所以今天它会是:10月,11月,12月,1月..

因此,对于此示例,它将是:

阵列 (
[0] => 标准类对象 ( [id] => 73 [名称] => 十月 [别名] => 十月 [描述] => 10)
[0] => stdClass 对象 ( [id] => 64 [名称] => 一月 [别名] => 一月 [描述] => 01)
[1] => stdClass 对象 ( [id] => 74 [名称] => 十一月 [别名] => 十一月 [描述] => 11) ...

我不知道该怎么做。

如果你的对象数组总是以 jan 开头,每个月有 12 个元素,试试这个,这可能不是最有效的方法:

$curMonth = date("n")-1;
$out = array();
for($i = 0; $i < 12; $i++)
  {
  $index = ( $i + $curMonth ) % 12;
  $out[$i] = $YourObjectArray[$index]
  }
print_r($out);

只需检查月份是否比现在"小",然后将其放入数组末尾:

$arr[] = array('name'=>'jan', 'desc' => '01');
$arr[] = array('name'=>'feb', 'desc' => '02');
$arr[] = array('name'=>'mar', 'desc' => '03');
$arr[] = array('name'=>'apr', 'desc' => '04');
$arr[] = array('name'=>'may', 'desc' => '05');
$arr[] = array('name'=>'jun', 'desc' => '06');
$arr[] = array('name'=>'jul', 'desc' => '07');
$arr[] = array('name'=>'aug', 'desc' => '08');
$arr[] = array('name'=>'sep', 'desc' => '09');
$arr[] = array('name'=>'oct', 'desc' => '10');
$arr[] = array('name'=>'nov', 'desc' => '11');
$arr[] = array('name'=>'dec', 'desc' => '12');
foreach($arr as $i=>$y){
    if($y['desc'] != date('m')){
        unset($x[$i]);
        $arr[] = $y;
    }
    else{
        break;
    }
}
$arr = array_values($arr);