PHPのワナ

目次
1 array_mergeのワナ
2 zipファイルからインストールするときの注意
3 include_pathの変更
 3-1 Apacheから変更する
 3-2 スクリプト内から変更
4 ヒアドキュメント
 4-1 ヒアドキュメント内での文字の扱い
 4-2 ヒアドキュメント内での変数などの扱い
  ・ 変数
  ・ 配列変数
  ・ 定数
5 マニュアル


1 array_mergeのワナ
array_mergeをすると、数字を連想配列キーとして指定していた配列が
うまく機能しなくなってしまっていました……
どうも数値が上から順番に振りなおされている模様。
これは仕様か?と調べてみると仕様でした_| ̄|○

--
<?php
$array1 = array();
$array2 = array(1 => "data");
$result = array_merge($array1, $array2);
?>


数値添字が振りなおされることに注意!

Array
(
[0] => data
)


配列を完全に維持し、単に追加だけしたい場合には、+ 演算子を使用してください:

<?php
$array1 = array();
$array2 = array(1 => "data");
$result = $array1 + $array2;
?>


The numeric key will be preserved and thus the association remains. 数値添字は維持され、関連が保持されます。
--
PHPマニュアル より引用

ページのINDEXへ

2 zipファイルからインストールするときの注意
CGIバイナリ - C:/php/php.exe -
CLIバイナリ - c:\php\cli\php.exe -
SAPIモジュール - c:\php\sapi\*.dll - は、
メインDLLである c:\php\php4ts.dllに依存していますが、zipファイルを解凍しただけでは
php4ts.dllへの参照は解決されません。

よって、Apacheを起動するとエラーとなってしまいます。

解決するためにはphp4ts.dllをWINDOWSフォルダなどにコピーし、参照されるようにすればOKです。
(installer版を使用すると、dllのコピーはインストール時に自動的に行われます。)

詳細:PHPマニュアル (Windowsへのインストール)
ページのINDEXへ

3 include_pathの変更
3-1 Apacheから変更する
.htaccessなどに、以下のように記述します。

<Files *.php>
php_value include_path ".:../lib"
</FIles>

これで、*.phpファイルが呼び出されたときに上記変更が適用されます。

3-2 スクリプト内から変更
以下の関数を使用します。

ini_set("include_path", ".:../lib");


また、設定を取得するのは以下の関数を使用します。

設定値=ini_get("include_path");


ページのINDEXへ

4 ヒアドキュメント
一々「\"」なんてエスケープしてられるかゴルァ!ってときに使用。
例えば$strに文章を代入したい場合は以下のようにします。

$str = <<<EOF
変数strに代入する文章1
文章2
文章3
EOF;

とすると、EOFを終端IDとして、変数strに終端IDまでの文字列

変数strに代入する文章1
文章2
文章3

が代入されます。

ここで、最後の一文EOF; の行には、終端ID(EOF)と;以外の文字は含めてはいけないことに注意。
つまりEOF;の前にTabやSpaceを入れることができません。

4-1 ヒアドキュメント内での文字の扱い

ヒアドキュメントは、2重引用符を使用しませんが、2重引用符で括られた 文字列と全く同様に動作します。しかし、この場合でも上記のリストでエ スケープされたコードを使用することも可能です。変数は展開されますが、 文字列の場合と同様にヒアドキュメントの内部で複雑な変数を表わす場合 には注意が必要です。
(PHPマニュアルより引用)

とあるように、基本的には文字列の代入として動作します。
「"」文字などについては、ヒアドキュメント内である場合エスケープする必要はありません。
変数、定数については一寸気を付ける必要があります。

4-2 ヒアドキュメント内での変数などの扱い
・ 変数
print文などと同じように変数をそのまま定義することが可能です。
{}で括ると確実に変数を認識させることが出来ます。

・ 配列変数
式を波括弧で括ります。

$str = <<<EOF
test: {$test["str"]}
EOF;


・ 定数
定数は置き換えられません。
そのまま文字列として出力されます。

ページのINDEXへ

5 マニュアル
PHPマニュアル (日本語)
ヒアドキュメント

ページのINDEXへ
TIPS INDEXへ
Last modified: Fri 5 17:41:46 2003