旧それなりブログの跡地、画像やスタイルやJSなどが壊れてることがあります。

[PHP] 最近の解決ネタ (2009-11-11)

2009年11月11日

解決というか思い出しというか。

普段はPythonで仕事しているので、
そんな人が触った時に「あれっ?」と思うようなネタが多い。(と思う)

“\n” と ‘\n’

前者は、「1バイトの 改行コード」 として、
後者は、「2バイトの 半角エスケープ+半角n の文字列」 として、評価される。

シングルクォートを使用した場合は、

1. シングルクォート自身をエスケープしたい時
2. その関係で、半角エスケープ文字自体をエスケープしたい

・・・上記を除き、記述したまんまの文字列になる。(Pythonでいう r” のような)

参考) マニュアル – 文字列・引用符

foreach で 配列はインデックス順に回るか

<?php
$lines = array(
3 => 444,
0 => 111,
4 => 555,
1 => 222,
2 => 333,
);
foreach ($lines as $line) {
echo $line . "\n";
}

と、上記はインデックス順ではなく、定義順に回るので、されない。
まぁ、PHPは全て連想配列なので、仮に回ってもキモいすね。

おとなしく for を使うべし!

マルチバイト文字を chr や ord したい

Pythonで言う、u”\u3000″ みたいなことをしたかった。
結論としてはネイティブでは無理なので、以下の参考リンクのような関数を作る必要がある。

[PHP-dev 1167] ord と chr のマルチバイト文字バージョン

以上です

初心に帰りまくりで、
コードが教科書のように丁寧です。