参照代入で列挙中要素を置き換える2009年05月14日 00時53分09秒

なんというか、今まで知らなかったというか気にしたこともなかったというか。

foreachループ処理で

$array = array( 'a' => 'a', 'b' => 'b', 'c' => 'c' );
foreach( $array as &$item ) {
    $item = strtoupper( $item );
}
print_r( $array );
なんてやると、
Array
(
    [a] => A
    [b] => B
    [c] => C
)
なんて結果が得られるのね。

当然foreach内の「as &$item」を「as $item」にすると、print_r()の結果は小文字のまま。 なるほど、明示的な参照代入って、こういう風に使うんだぁ。

ちなみにこれはZend_Db_Adapterかなんかのソース見てて発見した。

ローカル(?)php.ini2009年05月22日 03時46分28秒

PHPで作ったアプリケーションと一緒にアプリに必要な設定のみを記述したphp.iniを配置して、

foreach(parse_ini_file('./php.ini') as $key => $value) {
    ini_set($key, $value);
}
なんてコードをindex.phpの先頭に差し込んで設定上書きしてみる、というのを思いついてみたのだが。まぁファイル名は別に「php.ini」じゃなくてもいいんだけど。

上記コードで確かに設定上書きは可能なんだけども、

  • 所詮ini_set()での設定なので、ini_set()で反映されない項目には使えない
  • リクエストで直接呼び出されるすべてのスクリプトに記述する必要がある
ってな具合に制約があるので、思ったほど便利じゃないような

まぁ、ZFのMVCアプリケーションなんかで、mbstring関連なんかの設定を切り出しておいたりするのには使えるか。