2015年05月07日

PHPの「連想配列」: associative array

PHP では、添字配列と連想配列は同じものだとされています。それについては、配列のページで書かれており、英文の原文では 以下のように記述されています。

PHP arrays can contain integer and string keys at the same time as PHP does not distinguish between indexed and associative arrays

PHPの配列は、インデックス付きと連想配列を区別せず、整数と文字列のキーを含めることができます
以下、日本語ページ PHP: 配列 - Manual つまり、あまり深く考えずに「配列」というものを数字または文字列で管理するグループ化された値の集合だと思って、一覧が欲しい場合は foreach を使います
<?

foreach( $_SERVER as $member ) {

	print $member;

}

?>



更新履歴
2010-10-06 : 記事作成
2013-05-04 : フォントサイズ・改行調整
2015-05-07 : 原文が変更されていたので修正


posted by at 2015-05-07 11:02 | ドキュメント | このブログの読者になる | 更新情報をチェックする

検索やキーワードで日本語が化けない、ユーザーノートが付属した php.chm

posted by at 2015-05-07 10:48 | ダウンロード | このブログの読者になる | 更新情報をチェックする

AN HTTPD Server と PHP

Windows 用 WWW サーバー

実運用では無く、学習用の WWWサーバーとしてはこれ以外に無い『AN HTTP Server』ですが、古いソフトなので使い方にコツがあります

※ 古いソフトとなってしまいましたが、検証(テスト)用であればこれで十分です。

取り急ぎ、以下の画像の設定が可能であればそれで設定は十分です。





あとは、C:\httpd142p\user というディレクトリを作成してその中でテストする事が最も簡単です


PHP

PHP For Windows: Binaries and sources Releases

XP ならば、VC6 x86 Non Thread Safe で確実だと思います
Windows7 ならば VC9 x86 Non Thread Safe を試してみて下さい

Zip パッケージを C:\ にダウンロードして解凍して、c:\php にリネームして、
c:\php\php-cgi.exe が存在するようにして、c:\php に以下の php.ini をダウンロードします

php.ini のダウンロード

自分で作成する場合

php.ini-development を php.ini にリネームするのがいいと思います。(以下を参考にして下さい。)
















posted by at 2015-05-07 10:41 | 環境 | このブログの読者になる | 更新情報をチェックする

2014年09月20日

HTML5 の input 要素の type="file" で multiple を使う場合の記述方法と、type="submit" ボタンの FORM 属性の上書き。


<input type="file" 
	name="upload_files[]"
	multiple>
IE11 では、何かと HTML5 の対応が遅れていますが、ファイルを同時に複数選択できる multiple 属性を使用可能です。( もちろん、Google Chrome と Firefox でも使用できます )

PHP 側では、配列で取得できるように、HTML の name 属性の名前の最後に [] を付加します。

MAX_FILE_SIZE の名前を持つフィールドは、PHP の仕様にあわせたものですが、全てのファイルが対象となります。MAX_FILE_SIZE を持つフィールドは、仕様として file フィールドの前にある必要があります
<form method="post"
	target="my_frame"
	action="upload.php"
	enctype="multipart/form-data"
	accept-charset="utf-8">
	<input type="hidden"
		name="MAX_FILE_SIZE"
		value="5000">
	<input type="file"
		name="upload_files[]"
		multiple>
	<input name="send"
		type="submit"
		value="アップロード">
</form>
<iframe name="my_frame"
	frameborder="1"
	scrolling="yes"
	width="600"
	height="300" >
</iframe>


以下は、PHP のスーパーグローバルを表示した結果です
Array
(
    [upload_files] => Array
        (
            [name] => Array
                (
                    [0] => Create_Alias_AnHttpd.vbs
                    [1] => Create_Alias_AnHttpd_Folder.reg
                    [2] => forms_fileupload_130908.zip
                )

            [type] => Array
                (
                    [0] => 
                    [1] => application/octet-stream
                    [2] => application/x-zip-compressed
                )

            [tmp_name] => Array
                (
                    [0] => 
                    [1] => /var/tmp/phpS3V82b
                    [2] => /var/tmp/php1P8Zgk
                )

            [error] => Array
                (
                    [0] => 2
                    [1] => 0
                    [2] => 0
                )

            [size] => Array
                (
                    [0] => 0
                    [1] => 462
                    [2] => 4055
                )

        )

)
Array
(
    [MAX_FILE_SIZE] => 5000
    [send] => アップロード
)

ここで、一つ目のファイルはサイズ制限の為、アップロードはできていません。

以下は、PHP のコードです
<?php
header( "Content-Type: text/html; Charset=utf-8" );
?>
<pre>
<?php
foreach( $_POST as $key => $value ) {
	$_POST[$key] = @htmlspecialchars($value, ENT_NOQUOTES);
}

print_r($_FILES);
print_r($_POST);

?>
</pre>

現在 IE11 では使用できませんが、FORM 要素と INPUT 要素を関係づける input 要素の form 属性を使った記述方法はこちらから。

<input name="send"
	type="submit"
	formmethod="post"
	formenctype="multipart/form-data"
	formaction="upload.php"
	value="アップロード">
type="submit" ボタンで使用できる、FORM 要素の属性の上書きは、以下のように記述できます。これによって、ボタンによって送り先を自由に変更できる大きなメリットが加わりました。
<form id="form_unit"
	target="my_frame"
	accept-charset="utf-8">

	<input form="form_unit"
		type="range"
		name="userid">

	<br>

	<input name="send"
		type="submit"
		formaction="get.php"
		value="GET送信">

	<input name="send"
		type="submit"
		formmethod="post"
		formaction="post.php"
		value="POST送信">

	<br><br>

	<input type="hidden"
		name="MAX_FILE_SIZE"
		value="5000">
	<input type="file"
		name="upload_files[]"
		multiple>

	<input name="send"
		type="submit"
		formmethod="post"
		formenctype="multipart/form-data"
		formaction="upload.php"
		value="アップロード">

</form>

<iframe name="my_frame"
	frameborder="1"
	scrolling="yes"
	width="600"
	height="300" >
</iframe>






タグ:HTML5
posted by at 2014-09-20 00:38 | HTML | このブログの読者になる | 更新情報をチェックする

2014年09月19日

Google Chrome でページ上の任意の要素(オブジェクト)の詳細を表示する方法

▼ クリックすると、GIF アニメーション画像が画面中央に大きく表示されます

( 最初の停止は 4秒で、途中の文字説明は4秒停止します。最後6秒停止して元へ戻ります )

現行のブラウザでは、皆 console.log と console.dir が実行できますが、Google Chrome でオブジェクトを表示したい場合3通りの方法があります。

1) $("セレクタ")
2) console.log( オブジェクト )
3) dir( オブジェクト )

1) は、コマンドライン API のメソッドで、jQuery が読み込まれていなくても同じ記述でオブジェクトを参照できます。
1) と 2) は同じ結果の場合もあれば違う場合もあるので目的に応じて利用するといいと思います。
3) は、console.dir の別名で、オブシェクトの情報を階層構造で全て表示します。

これらを使い、ページ上のインスペクトされた任意の要素を表示する手順です。

1) 要素を選択( 虫眼鏡アイコンでインスペクトモードに入って選択 )
2) Elements タブで対象としたいオブジェクトを確定させる
3) 右クリックして Copy CSS path でセレクタ文字列を取得
4) $("セレクタ文字列") で参照します



posted by at 2014-09-19 20:19 | ブラウザ | このブログの読者になる | 更新情報をチェックする