SATAEI-LPPCI

http://www.kuroutoshikou.com/products/serialata/sataei-lppcifset.html

主な仕様: SerialATA対応
SiliconImage Sil3512搭載
コネクタ形状: SerialATAIIコネクタ2ポート
(内部1ポート、外部1ポート)
インターフェース: PCI (標準及びロープロファイル対応)
対応OS: Windows2000/XP
保証: 1年間
製造元: Lycom
メーカーサイト: http://www.lycom.com.tw/

date関数で”Asia/Tokyo・・”なんかのエラーが出る件:PHP5.1.0以降

今まで動いてたのに。。
なんて事はプログラミングの世界ではよくありますが、今回はphpにおける、そんなネタ。

phpのdate関数を発行する際、タイムゾーンを設定していないと下記のようなエラーが出ます。

Strict Standards: date() [function.date]: It is not safe to rely on the systems timezone settings, please use the date.timezone setting, the TZ environment variable or the date_default_timezone_set() function. We now use 'Asia/Tokyo' for 'JST' in



どうも、5.1.0からデフォルトタイムゾーンを設定しないといけないみたい。。
設定は、date_default_timezone_set関数で定義するか、php.iniで設定するかです。

date_default_timezone_set 関数
date_default_timezone_set() は、日付/時刻関数で 使用されるデフォルトタイムゾーンを設定します。
注意: PHP 5.1.0 以降(日付/時刻 関数が書き直されてから)、タイムゾーンを 正しく設定せずに日付/時刻関数をコールすると E_NOTICE が発生し、またシステムの設定や TZ 環境変数を 使用すると E_STRICT が発生するようになりました。



つまり、date_default_timezone_set関数では以下のように記述、

date_default_timezone_set('Asia/Tokyo');


php.iniでは、以下のように設定、

date.timezone = Asia/Tokyo



となります。

しかし、これって結構影響デカイ変更ですね。。

PHPのunpack関数が出力する配列のインデックスを振り直す

unpack関数の使い方については書いたのですが、一つ注意点があります。

それは、フォーマットを unpack("C*",$data) の様にした場合、出力される配列のインデックスが1から振られてしまうという点です。

自分の場合、配列のインデックスは0から始まるものとしてプログラムを書く事が多いので、この仕様はちょっと気持ちが悪いです。

そこで、unpack()関数で出力される配列のインデックスを振り直すことにします。

やり方は簡単。
unpack関数の結果をarray_merge 関数に渡すだけです。
※数字インデックスのみが振り直されますので、インデックス文字を指定した部分は変化しません。


$arr = array_merge( unpack("C*",$data) );

array_merge関数|PHPマニュアル

配列が一つだけ指定され、その配列が数字で添字指定されていた場合、 キーの添字が連続となるように振り直されます。

これでインデックスが0から始まる配列にすることができました。

スッキリ。(^-^)