1

次の配列があり、現在の月から逆方向に並べ替える必要があります-取得するのはNULLだけです

これが私が試していることです:

$months = array(
'January' => 0,
'February' => 0,
'March' => 0,
'April' => 0,
'May' => 0,
'June' => 0,
'July ' => 0,
'August' => 0,
'September' => 0,
'October' => 0,
'November' => 0,
'December' => 0,
);

$current = date('F');
$start = array_search($current, $months);

$toshow = array();
$total = 0;
for($i = $start; $total < 12; $i--)
{
if($i == 0)
{
    $i = 12;
}

$toshow[] = $months[$i];
$total++;
}

var_dump($toshow);

そして、私が得る結果は次のとおりです。

array(12) { [0]=> NULL [1]=> NULL [2]=> NULL [3]=> NULL [4]=> NULL [5]=> NULL [6]=> NULL [7]=> NULL [8]=> NULL [9]=> NULL [10]=> NULL [11]=> NULL } 
4

5 に答える 5

0

試す

$current = date('F');
$arr = array_combine(range(1,12), array_keys($months));
$start = array_search($current, $arr);
//$start = date('n');
for ($i=$start;$i<=12;$i++) {
  $arr_sorted[$arr[$i]] = $months[$arr[$i]];
}
for ($i=1;$i<$start;$i++) {
  $arr_sorted[$arr[$i]] = $months[$arr[$i]];
}
print_r($arr_sorted);
于 2012-09-30T10:55:54.273 に答える
0

use the krsort(): この関数は、配列を値との相関を維持しながらキーで逆順に並べ替えます。この関数は、連想配列に役立ちます。

krsort($months );

print_r($months );

実例

于 2012-09-30T10:49:07.783 に答える
0

krsort($toshow = cal_info(CAL_GREGORIAN));` を使用すると、逆に並べ替えられた月の配列が得られます。

于 2012-09-30T10:49:59.967 に答える
0

これはあなたが望むことだと思います:

$months = array(
'January' => 0,
'February' => 0,
'March' => 0,
'April' => 0,
'May' => 0,
'June' => 0,
'July ' => 0,
'August' => 0,
'September' => 0,
'October' => 0,
'November' => 0,
'December' => 0,
);

$current = date('F');
$keys = array_keys($months);
$start = array_search($current, $keys);
$toshow = array();


for($i=$start+12; $i>$start; $i--) {
  $key = $i % 12;
  $toshow[$keys[$key]] = $months[$keys[$key]];
}

var_dump( $toshow );

出力:

array(12) { 
  ["September"]=> int(0) 
  ["August"]=> int(0) 
  ["July "]=> int(0) 
  ["June"]=> int(0) 
  ["May"]=> int(0) 
  ["April"]=> int(0) 
  ["March"]=> int(0) 
  ["February"]=> int(0) 
  ["January"]=> int(0) 
  ["December"]=> int(0) 
  ["November"]=> int(0) 
  ["October"]=> int(0) 
}
于 2012-09-30T10:57:46.783 に答える
0

静的な値を持つ配列を取得し、それを逆方向に並べ替える必要があるのはなぜですか。以下のように、配列自体を逆にすることができます

この配列を取る必要はありません

$months = array(
'January' => 0,
'February' => 0,
'March' => 0,
'April' => 0,
'May' => 0,
'June' => 0,
'July ' => 0,
'August' => 0,
'September' => 0,
'October' => 0,
'November' => 0,
'December' => 0,
);

$months 配列を逆方向に直接作成できます。

$months = array();
$currentMonth = (int)date('m');

for($x = $currentMonth; $x >=$currentMonth-12; $x--) {
    $months[date('F', mktime(0, 0, 0, $x, 1))] = 0;
}

echo "<pre>";
print_r ($months);

これで、配列自体が期待どおりに見えます

Array
(
    [September] => 0
    [August] => 0
    [July] => 0
    [June] => 0
    [May] => 0
    [April] => 0
    [March] => 0
    [February] => 0
    [January] => 0
    [December] => 0
    [November] => 0
    [October] => 0
)

出力を参照してください: http://codepad.org/WuBBYeUh

于 2012-09-30T11:03:20.130 に答える