Php 使用对象对数组中当前月份进行排序

Php 使用对象对数组中当前月份进行排序,php,arrays,Php,Arrays,这是我的对象数组: 数组( [0]=>stdClass对象([id]=>64[name]=>一月[alias]=>一月[description]=>01) [0]=>stdClass对象([id]=>64[name]=>一月[alias]=>一月[description]=>01) [1] =>stdClass对象([id]=>65[name]=>二月[alias]=>二月[description]=>02) 我如何从本月开始对其进行排序,然后按自然方式进行排序,因此今天的排序将是: 十月、十

这是我的对象数组:

数组(
[0]=>stdClass对象([id]=>64[name]=>一月[alias]=>一月[description]=>01)
[0]=>stdClass对象([id]=>64[name]=>一月[alias]=>一月[description]=>01)
[1] =>stdClass对象([id]=>65[name]=>二月[alias]=>二月[description]=>02)

我如何从本月开始对其进行排序,然后按自然方式进行排序,因此今天的排序将是: 十月、十一月、十二月、一月

因此,对于这个例子,它将是:

数组(
[0]=>stdClass对象([id]=>73[名称]=>10月[别名]=>10月[说明]=>10)
[0]=>stdClass对象([id]=>64[name]=>一月[alias]=>一月[description]=>01)
[1] =>stdClass对象([id]=>74[名称]=>11月[别名]=>11月[说明]=>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);
$curMonth=日期(“n”)-1;
$out=array();
对于($i=0;$i<12;$i++)
{
$index=($i+$curMonth)%12;
$out[$i]=$YourObjectArray[$index]
}
打印(输出);
只需检查月份是否比现在“小”,然后将其放入数组末尾:

$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);

你的数组是固定的吗?换句话说,总是第一个元素一月,第二个元素二月等等?对于你的问题来说,这是一个更通用的解决方案。但是它有一些开销和优化的解决方案(删除排序月数组中的
array\u search
,以提高性能)。请回顾您的问题。您所问的数组在PHP中从技术上讲是不可能的。一个非常简单的解决方案是,在旧数组的基础上创建一个新数组,将其切成两半,然后重新组合,请参见和。示例:太棒了,非常感谢:)