1

and array を使用して、月の名前の最初の 3 文字を出力しようとしています (date() でこれを実行できることはわかっていますが、PHP で配列を学習していて、これが最も簡単に思えました)。一番下のコードを実行するたびに、以下のエラー コードが表示されます。

注意: 未定義のオフセット: C:\Documents and Settings\Garry\My Documents\Dropbox\htdocs\Web-Apps\Locander2\Alpha\step2.php の 17 行目の 8

のインデックス部分に 8 または 9 を入力した場合にのみ、この問題が発生し$monthArray[]ます。

<?php

$monthArray = array(01 => "Jan",
                    02 => "Feb",
                    03 => "Mar",
                    04 => "Apr",
                    05 => "May",
                    06 => "Jun",
                    07 => "Jul",
                    08 => "Aug",
                    09 => "Sep",
                    10 => "Oct",
                    11 => "Nov",
                    12 => "Dec"
                    );

    echo $monthArray[8];

?>
4

5 に答える 5

5

数値の前に 0 を追加すると、PHP は 0x を前に追加すると 16 進値として解析されるのと同じように、8 進値として解析されます。ゼロを削除すると、正常に機能します。

echo 07; // prints 7
echo 010; // prints 8

これは主に、UNIX パーミッションを指定するときに使用されます。

chmod("myfile", 0660);

それを除けば、やりたいことはめったにありません。

これはPHP マニュアルで説明されています。

<?php

$monthArray = array(
                    00 => "Jan",
                    01 => "Jan",
                    02 => "Feb",
                    03 => "Mar",
                    04 => "Apr",
                    05 => "May",
                    06 => "Jun",
                    07 => "Jul",
                    08 => "Aug",
                    09 => "Sep",
                    10 => "Oct",
                    11 => "Nov",
                    12 => "Dec"
                    );

    echo $monthArray[0];
    echo "<pre>";
    var_dump($monthArray);

?>

出力:

Sep

array(11) {
  [0]=>
  string(3) "Sep"
  [1]=>
  string(3) "Jan"
  [2]=>
  string(3) "Feb"
  [3]=>
  string(3) "Mar"
  [4]=>
  string(3) "Apr"
  [5]=>
  string(3) "May"
  [6]=>
  string(3) "Jun"
  [7]=>
  string(3) "Jul"
  [10]=>
  string(3) "Oct"
  [11]=>
  string(3) "Nov"
  [12]=>
  string(3) "Dec"
}

08 と 09 は 8 進数に変換されます。それらの値は、配列の $monthArray[00] 値に配置されています

于 2013-09-04T10:11:36.987 に答える
2

これを試して、

echo $monthArray['08'];

または echo $monthArray[08];

使用するキーが違うようです

于 2013-09-04T09:57:09.667 に答える
0

echo $monthArray[08];の代わりに書くecho $monthArray[8];

于 2013-09-04T10:00:05.530 に答える