132件中 116-120件目     [ ... 18 19 20 21 22 23 24 25 26 27 ]

PHPでは十進数以外を使うことは稀だと思うが、多くのプログラミング言語で、十進数以外を使う機会はある。 PHPには標準関数の中に2進数や10進数、16進数などの相互変換だけでなく、n進数からm進数に変換する関数もある。

$result = decbin($number);        // 10進数 → 2進数
$result = bindec($binary_string); // 2進数 → 10進数
$result = decoct($number);        // 10進数 → 8進数
$result = octdec($octal_string);  // 8進数 → 10進数
$result = dechex($number);        // 10進数 → 16進数
$result = hexdec($hex_string);    // 16進数 → 10進数
$result = base_convert ($number, $frombase, $tobase); // n進数 → m進数

これらで大きな値を数値に変換する際には、値の範囲に制限があることに注意。


formからデータを送る方法にはGETとPOSTの2種類がある。 基本的にはその2種類のどちらかしか使わないが、formのaction属性に指定するURLを書き換えることで、GETとPOSTの両方を同時に送ることもできる。

<form action = "?test=1234&name=Fermat" method = "POST">
	<table>
		<caption>GETとPOSTを同時送信</caption>
		<tbody>
			<tr><th>年齢[age]</th><td><input type = "text" name = "age" value = "45"></td></tr>
			<tr><th>名前[name]</th><td><input type = "text" name = "name" value = "Gauss"></td></tr>
		</tbody>
	</table>
	<input type = "submit" value = "送信">
</form>

このように書くと、action属性に書いたtestとnameの値をGETで、inputタグに書いたageとnameの値をPOSTで送る。


新しい環境にMySQLやPHPなどを入れたところ、MySQLを直接いじれば文字化けしないのに、PHPからMySQLに日本語データを入れた場合にのみ文字化けが起きた。 これは以前、直したことがあったのだが、かなり前のことだったので忘れてしまっていて、直すのに無駄に時間がかかってしまった。

この文字化けの原因は、MySQLのデフォルトの文字コードがlatin1で、さらにそれがスウェーデン語として扱われるためだ。 mysqlコマンドでstatusと打ち込むと、現在の設定が表示され、その中に文字コードの設定がある。

> status
(※省略)
Server characterset:    latin1
Db     characterset:    latin1
Client characterset:    latin1
Conn.  characterset:    latin1
(※省略)

PHPはapacheの権限で動くため、PHPによって作られたフォルダやファイルの所有者は、apacheユーザ(「www-data」「www」「nobody」など)になる。 そのフォルダやファイルのパーミッションが、他のユーザによる削除を許可していない場合、パーミッションか所有者を変更しない限り削除できないため、フォルダやファイルが削除できずに困ることがある。
そんなときには、パーミッションか所有者を変更すれば削除できる。 パーミッションを変更するならchmodコマンド、所有者を変更するならchownコマンドを使う。

> chown user_name file_name
> chmod 777 file_name

ただし、当然パーミッションを変更したり、所有者を変更できる権限が必要になる。 rootで実行できれば簡単だがroot権限で実行できない場合も多い。 そんなときは、ファイルを作ったapache自身に変えさせる。

PHPにはchmod関数chown関数があり、以下のように変更することができる。

chown($file_name, $user_name);
chmod($file_name, 0777);

PHPには配列をランダムに並べ替えるshuffle関数というものがあるが、この関数は配列のキーを削除してしまう。 例えば、以下のようなデータがあると

Array
(
	[mike] => ミケ
	[tama] => タマ
	[kuro] => クロ
	[siro] => シロ
)

以下のように、キーの文字列が削除され、数値キーに変えられてしまう。

Array
(
	[0] => シロ
	[1] => ミケ
	[2] => タマ
	[3] => クロ
)

そこで配列からキーを取り出し、それをshuffle関数でランダムに並び替え、その配列から元の配列をランダムに並び替えたものを作ることにする。


132件中 116-120件目     [ ... 18 19 20 21 22 23 24 25 26 27 ]