Author Archive

2-1.簡単なものから・・・。

やはり、プログラムをするに当たって簡単なものから作った方が良いですよね。
データベースも使わず、ちょっとだけ便利なものということで、
カレンダーを作ってみたいと思います。

作るカレンダーは、次のようなものにします。

1.日付の指定をすることができる。
2.土日だけ色をつける
3.今日だけ太字にする。

特にデータベースを使うわけでも何でもないので
すぐに作れると思います。

では、始めてみましょう。

・・・・・。といわれても、何から初めて良いか分かりませんね。
では、まず今月のカレンダーを表示するために必要なものを考えてみましょう。

一つ目は、今月の最終日は何日なのか・・・。

1月なら31
2月なら28か29
3月なら30・・・・という具合ですが、分かると思いますが
閏年(うるうどし)の時は最終日が変動するので大変です。

ほかにも大変なことがあります。
それは曜日です。

月始めの日が何曜日なのか・・・。

・・・・・。

問題は山積ですが、本当に簡単に、今日の日付を表示するだけのプログラムを作ってみましょう。

<?php

	echo date("Y-m-d");

?>

ということで、完了・・・・。
簡単すぎますね・・・。だが、このdateの使い方が分からないと話になりませんね・・・。
次のサイトを見て下さい。
http://php.net/manual/ja/function.date.php

1-5.関数を制するものはプログラムを制す?
で説明したと思いますが、もう一度おさらいしてみましょう。

y = ax に当てはめて考えてみると、
string date( string format , int timestamp ); は、
日付(文字) = フォーマット(文字) × タイムスタンプ(数字) というのを表しています。

日付(文字)というのは、そのまま日付なのですっ飛ばしますが
次のフォーマットは、覚える必要が出てきます。(まぁ、毎回ネットで検索でもいいと思いますが・・・

上のソースでは、"Y-m-d"が、フォーマットの部分になります。
このフォーマットは、先ほどのURLに詳しく載ってますので、そちらを参考にして下さい。

今回使っているものだけ解説すると
Y : 年を4桁で表す。 例)2010
m : 月を2桁で表す。 例)02
d : 日を2桁で表す 例)31
というのをそれぞれ表しています。

そして、二つ目のタイムスタンプというのは、1970年1月1日をから起算する整数です。
1秒に1ずつ増える整数だと思っていただければいいのですが、
こんな表現ではわかりにくいので、詳しく書くと

1970年1月1日0時0分0秒 = 0
1970年1月1日0時0分1秒 = 1
1970年1月1日0時0分2秒 = 2
と続く値です。

ちなみに、現在記事を書いている時間は、
2010年03月14日 23:41:42 = 1268577702
になります。

date関数は、二つ目の引数にタイムスタンプ(整数)を入れると、そのタイムスタンプの日時のデータを返してくれます。
何も入れなければ、現在(たった今)のタイムスタンプを利用して日時を返してくれます。

つまり最初に書いたプログラムでは、今日の日付(2010-03-14)を返してくるということです。
このdate関数を使ってカレンダーを作っていきますので、
http://php.net/manual/ja/function.date.php
このマニュアルのフォーマットの箇所を、みておいて下さい。

3-1.最初が肝心!?

プログラムを作る上で、肝心なのは最初です。
最初にやることは、どんなものを作るのか(仕様)を前もって詰めて考えることです。
これをすることで、
1.何を作らなくてはいけないのか。
2.プログラムの中でも何をしなくてはいけないのか
3.どんな機能(関数)が必要なのか
と、ハッキリしてきます。

では、どんなものを作るか考えてみましょう。

今回は、一昔前に流行った『掲示板(BBS)』を作ってみたいと思います。
1.タイトル、本文を入力、表示する
2.管理者と、書いた本人は削除することができる。
3.独自のスキンに対応
4.データは、MySQLのデータベースを使ってみる。

こんな掲示板を作ってみますかね・・・。

では、次の手順で作ってみましょう。

1.データベースの準備をする。
2.見た目を作ろう。
3.データを登録する。
4.データを削除する。

1-1.SODA


ポップチックな英字プロポーショナルフォント!
いろんな場面で、使える万能フォントです!
英数字のみを収録しています。

誤字等がありましたら、ご報告いただけると幸いです。

Download

利用規約に同意してダウンロードしてください。

0-1.利用規約 License

当サイトで配布しているフォントは、フリーフォントですが使用に当たってはルールがあります。ルールに従ってご利用下さい。フォントの使用をもちまして、この利用規約に同意したものとします。また、以下の利用規約は通告なく改変される場合があり、その場合は改変を持って効力を持つものとします。

1.加工・改変の禁止

当フォントのデータ自体(ttfなどのフォントファイル)を加工・改変する事は禁止します。
フォントを使った『Flash・ロゴ・チラシ・ポスター・映像コンテンツ』等の作成は、ここでいう加工・改変には当たりませんので、ご自由にご使用下さい。

2.二次的有償・無償提供

当フォントを使用は、有償・無償のサービスの如何に関わらず自己責任でご使用下さい。詳しくは下記の「4.免責事項」に従い、責任は負いかねます。
但し、フォントデータ自体を販売することは、禁止します。

3.雑誌等・公的配布物による二次配布について

雑誌等への掲載は、事前に管理人へメールでお問い合わせください。
その他、バンドル等で付属配布される場合も、事前連絡をお願い致します。

4.免責事項

当フォントを使用して起こった如何なる問題に対しても、制作者DAICHIは、責任を負いかねますのでご了承下さい。

5.文字の追加

当フォントデータ(.ttf)に、文字を追加することは、禁止とさせて頂きます。「1.加工・改変の禁止」と併せてご確認下さい。

6.その他

ここに掲載してある文面に無い事項、読み取れない事項につきましては、
個人での判断はお控え頂き、開発者DAICHIまでご質問下さい

—–
2012/02/29 変更

1-5.関数を制する者はプログラムを制す?

関数を理解するには、作り方と読み方が必要だと私は考えています。

作り方というのは、自分で関数を作る(自作関数)ということで、
読み方というのは、人が作った関数を使うということです。

では早速作り方を・・・・という前に、関数についてちょっと前置きしておきあます。
先の記事でも書きましたが、関数というと y = ax + bというようなモノを
思い出す人が多いのではないでしょうか。

もっと簡単にしてみると、y = x + bこれも立派な関数です。
xとbを足した答えがyということになります。

このyを求める関数に、名前を付けてあげるとしましょう。
そうですねー。足してるだけなので・・・・tasu いや、プログラムらしく plusという名前を付けることにします。

ここで、関数を作るソースを見てください

<?php

	function plus($x,$b){
		return $x + $b;
	}

?>

function 関数名 ( 関数で利用する変数の列挙) {
  関数で行われる処理
}

これが関数の基本です。
関数名は、基本的に自由に決めて構いません。
ですが、何かルールがないと、何をするための関数なのか解らなくなってしまいます。
自分なりのルールで名前を付けるか、標準的な名前で関数名を付けるかは、おまかせします。

私の場合は、getData とか loadFile とか(動詞+名詞)的な名前を付けることが殆どですが・・・。

さて、ここまで引っ張りましたが、作り方の解説開始です。
上のソースコードを見てください。
3行目の「function」で、これは関数だということを明記しています。関数の名前は「plus」
この「plus」の関数で使う変数は、x と b です。

4行目の「return」は、この関数の終わりを表していて、「return」の後ろの内容が y になります。
つまり、plus関数の答えです。

これが基本中の基本で、関数内では色んな処理をして、return を使って答えを返すのです。

ところで上のソースコードは実行してみましたか?
実行しても、画面が真っ白だと思います。

それはそうですよね。echo命令を使って表示しているわけでもありませんし、
むしろ、関数を作っただけで実際にはPHPはなんの命令も実行していないわけです。

では、今作ったplus関数を実際に使ってみましょう。

<?php

	function plus($x,$b){
		return $x + $b;
	}

	$y = plus(5, 2);

	echo $y;

?>

7行目で、作った関数を使っています。
$yの中には、関数内のreturnで指定されたものが入ります。
このように、関数名(使うデータの列挙)で使うことが出来ます。簡単でしょ?

でも、こんな必要ないような関数の説明では、全然関数の必要性が見えてきませんよね。
なので、関数について、もっといろんなものを体験した方が良いので、別の関数も作ってみましょう。
ということで、渡された配列のデータを、HTMLのテーブルにする関数を作ってみましょう。
(HTMLのテーブルの書き方がわからない人は、「HTMLの基礎」を読んでみてください。)

まずは、どんな関数にするのか、どんな処理をするかを頭の中に思い描きます。
慣れないうちは紙に箇条書きで書くとよりいいと思います。

関数の仕様は
2次元配列を受け取って、HTMLのテーブルデータにして返す。(echoでの出力はしない)

1.受け取ったデータを、foreach文で中身を取り出す。
2.行が始まるときは<tr>を変数に入れる。
3.列では<td> 1で取り出した中身 </td>を変数を入れる
4.行が終わるときは</tr>を変数を入れる
5.全部のデータが入ったらreturnでデータを返す。

さて、こんな感じの関数でいいかな・・・まぁ、やってみましょう。

<?php
	function convertTable($arr){
		foreach($arr as $k => $v){
			$buff .= '<tr>';
			foreach($v as $k1 => $v1){
				$buff .= '<td>'.$v1.'</td>';
			}
			$buff .= '</tr>';
		}

		return $buff;
	}
?>

といっても、ソースがすぐに出てきちゃうと、やれないですかね・・・。( ̄っ ̄;
とりあえず、動かしてみたり改造してみたりして触れてみて覚えてみてください。
眺めてるだけじゃ、理解できないともいますので・・・。

さて、せっかく作った関数です。つかってみます。

<?php

	$array = array(
		array("路線","駅名"),
		array("山手線","新宿"),
		array("山手線","渋谷"),
		array("山手線","東京"),
		array("山手線","品川"),
		array("山手線","西日暮里"),
		array("中央線","四谷"),
		array("中央線","お茶の水"),
		array("副都心線","新宿三丁目"),
		array("副都心線","池袋")
	);

	function convertTable($arr){
		foreach($arr as $k => $v){
			$buff .= '<tr>';
			foreach($v as $k1 => $v1){
				$buff .= '<td>'.$v1.'</td>';
			}
			$buff .= '</tr>';
		}

		return $buff;
	}

	echo '<table border=1>'.convertTable($array).'</table>';

?>


適当につくった2次元配列を、関数に入れてみました。
returnで返ってきた$buffを、<table>と</table>で囲って表(テーブル)として出力しています。

実行すると左図のような結果になると思います。

これで、関数に渡すデータ(配列)次第で自動で表(テーブル)を作ってくれる関数ができました。
この関数は、まだまだ不便なところや、受け渡す関数次第でエラーだって出ます。
それらを出ないようにしたり、改良したりしていくのもプログラムの醍醐味の一つかもしれません。

さて、関数がどんなものかというのは、少し分かってきましたか?

では、ここまで・・・・といいたいところですが、一番最初に書いたように関数では人が作った関数を読むことも必要です。
正確には、関数の中身を読むのではなく何をする関数で、何を渡して何が返ってくるのかというの理解することです。
関数の中でどんなことが行われてるのかは、この際気にしなくてもいいでしょう。

ということで、次をみてください。

これはPHPのリファレンスページのスクリーンショットの一部です。
http://php.net/manual/ja/function.str-replace.php
関数の説明は、このような感じで書かれることが多いです。
また、PHPの関数リファレンスは、今後多く目にするかもしれませんので読み方を覚えておいて損はないでしょう。

mixed str_replace ( mixed $search , mixed $replace , mixed $subject [, int &$count ] )

返値 関数名 ( 引数1 , 引数2 , 引数3 , [ 引数4 ] )
という構成になっています。
返値は、returnで設定されているもので、mixedというのは不定のデータ型ということです。
データ型というのは、後で説明します。簡単に言うと返ってくるデータの種類ということです。

関数名は、もう説明しなくてもいいですね。
引数1、引数2・・・というのは、関数に渡すデータです。

作り方が分かれば見方はわかりやすいかな?

でもちょっと説明不足ですよね。
上の関数でいえば、mixedというのが返値(関数から返ってくる値)ということになりますが、mixedというのは何なのか・・・。
それは先述の通り不定のデータということです。不定では分かりづらいので、定まってるデータを例に挙げてみます。

int 整数(例:10
float 少数 (例:0.5
bool 真偽値(例:true
array 配列
string 文字列(例:こんにちは

ほかにもあるかもしれません。よく覚えてない(ぇw
ここで、mixedの説明を再度すると、不定ということは、上に上げたデータのどれかの値が入っているということです。
配列かもしれないし、整数かもしれない・・・・という何とも微妙な状態ですね。
先で示したPHPリファレンスのページの下の方を読んでもらえば、返り値という項目に、こう書いてあります

この関数は、置換後の文字列あるいは配列を返します。

つまり、mixedは、文字列(string型)か、配列(array型)が、関数から返されるということになります。

引数の前についてるmixedも同じ意味です。引数にも受け渡すデータの型が関係しています。
使い続けていれば、少しずつ覚えてくると思いますので、あまり気にせずに使っていきましょう。

さて、これで関数はおしまいですが、これは基本の基本で説明も、かなり端折ってますので
使っていくうちになれていってください。

では、次は実際にプログラムを作っていってみましょう。

書いてみて・・・。

PHPについて記事を書いてみて思ったのだが・・・・

難 し い 。

何が難しいって、プログラムの概念というか感覚をつかめて、
尚かつ、覚えることが出来るだけ必要最小限になるように絞るのが難しい・・・・。

これまでに、書いた内容で、やっぱりコレは書くべきだったなーとか、
これは知っておいて欲しいなーとかいうところを書き忘れてたりする・・・。

番外編と言うことで、別にまとめて書こうかなー。

2.応用問題

出題:1-4.制御構文て難しそうじゃね?

foreach文を使って、次の配列のキーの色をしたデータを出力しなさい。
色の指定は、<span style="color: ** ;">****</span>で行うものとする。

	$array = array(
		"red" => "apple",
		"yellow" => "banana",
		"pink" => "peach",
		"green" =>"pineapple",
		"bule" => "strawberry",
		"orange" => "orange"
	);

Continue reading »

1.応用問題

出題:1-4.制御構文て難しそうじゃね?

for文を使って、1から100までの奇数を表示するプログラムを作りなさい。
(今までに解説した内容だけで作れる方法で作ってみてね!)

Continue reading »

2.基礎問題

出題:1-4.制御構文て難しそうじゃね?

foreach文を使って、次の配列の全データを表示しなさい。

	$array = array(
		"apple",
		"banana",
		"peach",
		"pineapple",
		"strawberry",
		"orange"
	);

Continue reading »

1.基礎問題

出題:1-4.制御構文て難しそうじゃね?

for文を使って、1から100まで表示するプログラムを作りなさい。
(これは簡単!ちょっと改造すれば良いんだよ。注意点はひとつ、1から始まるって事!)

Continue reading »