SlideShare a Scribd company logo
1 of 48
Download to read offline
超初心者向け! PHP勉強法と
プログラミング基礎の基礎
2013.06.01
すぎもと ひろゆき
PHPカンファレンス関西2013
(セッション B-1)
自己紹介
すぎもと ひろゆき
杉 本 展 将
下の名前をググってみた
閉 店
出典: 食べログ 展将ラーメン亭
photo by http://tabelog.com/tottori/A3103/A310301/31000724/dtlphotolst/4/ (2013.06.01)
続・自己紹介
• 株式会社ウィズテクノロジー 代表取締役
• デジタルハリウッド大学院 客員教授
• デジタルハリウッド大阪校 プログラミング系講師
• PHPカンファレンス関西 実行委員
facebook.com/hiroyuki.sugimoto @tenshow
本日の内容
• PHPに関する基礎知識
• デモ x 基本文法解説
• データ構造
• 変数、配列
• 関数の使い方
• 制御構造
• 分岐処理、繰り返し処理
プログラミング学習の壁
エラーが出て動か
ない・嫌になる
本を1冊勉強したけど、
ゼロからプログラム書けない
命令をどう使うか
イメージ沸かない
そもそも意味が
分からない
脱初心者への道
文法・プログラム
の流れが分かる
プログラムが改
造できる
プログラムを真
似て作れる
Level: 1
Level: 2
Level: 3
~ PHPに関する基礎知識 ~
PHPの開発に必要なもの
• PHP本体
• Webサーバ
• Apache, NginXなど
• データベース
• MySQL, PostgreSQL
• テキストエディタ
• Dreamweaver, PhpStorm
セットになった
・XAMPP
Apache + MySQL + PHP
・MAMP(Mac Only)
を使うと楽ちん!
Webページが表示される仕組み
<html>
<head><title>Web Page</title></head>
<body>
<h1>Hello!</h1>
</body>
</html>
Webサーバ
Webサーバソフト
Hello!
Webブラウザ
<Webサーバソフト>
・Apache
・Nginx
・IIS
リクエスト
レスポンス
PHPページが表示される仕組み
<html>
<head><title>PHP Page</title></head>
<body>
<?php
echo “Hello PHP!”;
?>
</body>
</html>
Webサーバ
Webサーバソフト + PHP
Hello PHP!
Webブラウザ
リクエスト
レスポンス
<html>
<head><title>PHP Page</title></head>
<body>
Hello PHP!
</body>
</html>
PHPの基本ルール
• <?php から ?>の間にプログラムを書く
• 命令は半角文字を使う
• 命令の最後には; (セミコロン) を書く
• ファイル名は英数字記号、拡張子は「.php」
PHPのエラーメッセージ
1 <html>
2 <head><title>PHP Page</title></head>
3 <body>
4 <?php
5 echo “Hello PHP!”:
6 ?>
7 </body>
8 </html>
Parse error:
→ エラーの種類 (xxx error:エラー, Warning: 警告, Notice: 注意)
syntax error, unexpected ':', expecting ',' or ';'
→ エラーの詳細メッセージ
in C:¥xampp¥htdocs¥loto7¥first.php
→ 対象ファイル名
on line 5
→ エラー発生の行番号
← セミコロンが
コロンになっている
first.php
~ デモ x 文法解説 ~
今から作るもの
注意!
• ソースコードは公開します
• 予想が外れても一切責任は持ちません!
• でも当たったらこっそり教えて下さいm(_ _)m
プログラムがやってること
入力
処理
出力
・フォームからの入力を受けとる
・ファイルを読み込む
・計算をする
・データベースに登録する
・ブラウザに表示する
ラッキー方位を表示
• 1~4の乱数を作る
• 1 → 北, 2 → 南, 3 → 東, 4 → 西
変数 関数 分岐処理
変数とは
• データ(値)を記憶しておく入れ物
• $変数名
• 変数にデータを入れる = 代入
• 1つの変数には1つのデータ
<?php
$num = 5;
?>
5
$num
変数名
• ルール
• 使用できる文字は半角英数とアンダースコア(_)
• 1文字目は数字が使用できない
• 大文字小文字を区別する
• 付け方
• 何のデータが入るのかを分かる名前にする
• $user_id, $itemPrice
文字の出力
• echo
• 文字を出力する場合は’か”で囲む
• echoの後ろに変数を書くと、変数の中身が出力
• print
• echoとほぼ同じ
関数
• データを受け取り、処理を行なって結果を返す
• 他の処理から使うことができる → 関数呼び出し
• ビルトイン関数
• 日付・時刻・カレンダー、テキスト処理
• メール送信、画像処理
• ファイル操作、データベース
関数呼び出しの動作
関数
引数
引数
戻り値
関数呼び出し
引数(ひきすう) – 関数に渡す値
・引数が無い場合がある
・引数は複数の場合がある
戻り値/返り値 – 関数に結果値
・戻り値は無い場合がある
関数呼び出しの動作
rand関数
1
4
3
$dir = rand(1, 4)
[戻り値を入れる変数] = 関数名([引数, 引数]);
PHP公式マニュアル
• PHPマニュアル
• http://www.php.net/manual/ja/
• 関数リファレンス
• http://www.php.net/manual/ja/funcref.php
• 関数名が分かっている場合
• http://php.net/関数名
比較演算子
• 2つの値を比較し、結果をtrueかfalseで表す
比較演算子 意味 例と結果 ($a = 5, $b = 8)
== 等しい $a == $b → false
!= <> 等しくない $a != $b → true
< より小さい $a < $b → true
> より大きい $a > $b → false
<= 以下 $a <= $b → true
=> 以上 $a => $b → false
4 < 5 → true (真)
3 > 8 → false (偽)
true/false (真偽値)
制御構造:分岐処理
• if
• switch
<分岐処理>
処理1 処理2
条件
条件によりどちらかの
処理を実行
ifの構文(1)
if (条件式) {
条件式がtrueの時の処理
}
ifの構文(2)
if (条件式) {
条件式がtrueの時の処理
} else {
条件式がfalseの時の処理
}
ifの構文(3)
if (条件式1) {
条件式1がtrueの時の処理
} else if (条件式2) {
条件式2がfalseの時の処理
} else {
条件式1と2がfalseの時の処理
}
switchの構文
switch (変数) {
case 値1:
変数が値1と一致する時の処理
break;
case 値2:
変数が値2と一致する時の処理
break;
default:
変数どのcaseにも一致しない時の処理
break;
}
ifとswitch
if ($dir == 1) {
$dir_str = “北”;
} else if ($dir == 2) {
$dir_str = “南”;
} else if ($dir == 3) {
$dir_str = “東”;
} else if ($dir == 4) {
$dir_str = “西";
}
switch ($dir) {
case 1:
$dir_str = “北”;
break;
case 2:
$dir_str = “南”;
break;
case 3:
$dir_str = “東”;
break;
case 4:
$dir_str = “西”;
break;
}
コードをどこに書くか
<?php
// 入力の受け取り・処理など
// 表示する内容を変数に入れる
?>
<html>
<head>
<body>
<div id=“id”><?php echo $id; ?></div>
<div id=“name”>
<?php echo $nanme; ?>
</div>
</body>
</html>
金運を表示
• 1~5の乱数を作る
• 乱数の数だけ★を表示
変数 関数
繰り返し
処理
制御構造:繰り返し処理
• for
• while
• do~while
• foreach
<繰り返し処理>
条件
処理
条件により処理を
繰り返して実行
forの構文
for (初期処理;条件式;後処理) {
繰り返したい処理
(条件式がtrueの時に実行)
}
forの動き
for ($i = 0; $i < 3; $i++) {
echo $i . '<br>';
}
① ②
③
④⑤
⑥
⑦⑧
⑨
⑩⑪
⑫
<実行結果>
1
2
3
・$i++ (現在の値に1を足す) - インクリメント
・$i-- (現在の値から1を引く) - デクリメント
whileの構文
while (条件式) {
繰り返したい処理
(条件式がtrueの時に実行)
}
予想数字を作る
• 1~37の乱数を7個作る
配列 関数
繰り返し
処理
このプログラムの問題点
• 同じ数字が2回以上出てくる可能性がある
• 予想数字がソートされていない
• 新しいLotoが増えると無理がある
• Loto8
• Loto16
• Loto48
配列
• 普通の変数にはデータが1つ
• 配列には複数のデータを保持できる
• キーで複数のデータを区別する
$score
キー 要素
0 75
1 80
2 34
$score = array(75, 80, 34);
echo $score[0]; → 75
ロト7の数字予想の考え方(その1)
• 1~37の乱数を作り配列に追加
• 乱数を作った時に、既に配列に存在するかどうか調
べる
• 配列に乱数が存在しない時だけ追加
• 配列に乱数が7個になるまで繰り返し
ロト7の数字予想の考え方(その2)
• 1~37の乱数を配列に入れる
• 配列をシャッフルする
• シャッフルした配列の先頭から7個を取り出す
• 取り出した7個をソートする
配列に関する関数
• array range($start, $end)
• $startから$endまでの整数が入った配列を作成
• bool shuffle($array)
• $arrayをシャッフルする
• array array_slice($array, $offset, $length)
• $arrayの$offset番目から$length個の中身を切り取る
• bool sort($array)
• $arrayをソートする
配列の中身を確認する
• print_r($expression)
• $expressionに関する情報をわかりやすく表示する
• var_dump($expression)
• $expressionに関する情報をダンプする
• 型情報などより詳細な情報を表示
foreachの構文
◆ 配列の要素が無くなるまで繰り返す
foreach (配列 as 変数) {
配列の要素を処理
}
まとめ
• プログラムの考え方・
動作を理解
• 他のプログラムを改造
する・真似る
• とりあえず動くこと優先
• 最初は簡単なものを
自分で作ってみる
おわりに
ご清聴
ありがとうございました!

More Related Content

Viewers also liked

PHP基礎勉強会
PHP基礎勉強会PHP基礎勉強会
PHP基礎勉強会Yuji Otani
 
PHP初心者に贈る、まちがえないPHPの始め方・学び方
PHP初心者に贈る、まちがえないPHPの始め方・学び方PHP初心者に贈る、まちがえないPHPの始め方・学び方
PHP初心者に贈る、まちがえないPHPの始め方・学び方Hiroyuki Sugimoto
 
忙しい人はSimplicityテーマに丸投げ
忙しい人はSimplicityテーマに丸投げ忙しい人はSimplicityテーマに丸投げ
忙しい人はSimplicityテーマに丸投げYuki Okamoto
 
初めてのプラグイン開発で学んだ教訓
初めてのプラグイン開発で学んだ教訓初めてのプラグイン開発で学んだ教訓
初めてのプラグイン開発で学んだ教訓Yuki Okamoto
 
8時間耐久 PHP構築の教室
8時間耐久 PHP構築の教室8時間耐久 PHP構築の教室
8時間耐久 PHP構築の教室Yusuke Ando
 
ダイナミック広告の改善と拡大
ダイナミック広告の改善と拡大ダイナミック広告の改善と拡大
ダイナミック広告の改善と拡大Yusuke Ando
 
Webプログラマの為のUnity入門
Webプログラマの為のUnity入門Webプログラマの為のUnity入門
Webプログラマの為のUnity入門Yusuke Ando
 
【アシアル塾】PHPオブジェクト指向再入門・第一回クラスとオブジェクト
【アシアル塾】PHPオブジェクト指向再入門・第一回クラスとオブジェクト【アシアル塾】PHPオブジェクト指向再入門・第一回クラスとオブジェクト
【アシアル塾】PHPオブジェクト指向再入門・第一回クラスとオブジェクトYuki Okamoto
 
ゴールデンウィークに最適な学習コンテンツ
ゴールデンウィークに最適な学習コンテンツゴールデンウィークに最適な学習コンテンツ
ゴールデンウィークに最適な学習コンテンツYusuke Ando
 
【アシアル塾】Linux超入門編・第一回はじめてのターミナル(黒い画面)操作
【アシアル塾】Linux超入門編・第一回はじめてのターミナル(黒い画面)操作【アシアル塾】Linux超入門編・第一回はじめてのターミナル(黒い画面)操作
【アシアル塾】Linux超入門編・第一回はじめてのターミナル(黒い画面)操作Yuki Okamoto
 
JINS MEME DEVELOPER HANDS-ON (Monaca / Apache Cordova編)
JINS MEME DEVELOPER HANDS-ON (Monaca / Apache Cordova編)JINS MEME DEVELOPER HANDS-ON (Monaca / Apache Cordova編)
JINS MEME DEVELOPER HANDS-ON (Monaca / Apache Cordova編)アシアル株式会社
 
今、最もイケてるPHPフレームワークLaravel4
今、最もイケてるPHPフレームワークLaravel4今、最もイケてるPHPフレームワークLaravel4
今、最もイケてるPHPフレームワークLaravel4アシアル株式会社
 
40分濃縮 PHP classの教室
40分濃縮 PHP classの教室40分濃縮 PHP classの教室
40分濃縮 PHP classの教室Yusuke Ando
 
新標準PSRに学ぶきれいなPHP
新標準PSRに学ぶきれいなPHP新標準PSRに学ぶきれいなPHP
新標準PSRに学ぶきれいなPHPYusuke Ando
 

Viewers also liked (16)

PHP基礎勉強会
PHP基礎勉強会PHP基礎勉強会
PHP基礎勉強会
 
PHP初心者に贈る、まちがえないPHPの始め方・学び方
PHP初心者に贈る、まちがえないPHPの始め方・学び方PHP初心者に贈る、まちがえないPHPの始め方・学び方
PHP初心者に贈る、まちがえないPHPの始め方・学び方
 
PHP超入門@LL温泉
PHP超入門@LL温泉PHP超入門@LL温泉
PHP超入門@LL温泉
 
忙しい人はSimplicityテーマに丸投げ
忙しい人はSimplicityテーマに丸投げ忙しい人はSimplicityテーマに丸投げ
忙しい人はSimplicityテーマに丸投げ
 
Ethna Updates
Ethna UpdatesEthna Updates
Ethna Updates
 
初めてのプラグイン開発で学んだ教訓
初めてのプラグイン開発で学んだ教訓初めてのプラグイン開発で学んだ教訓
初めてのプラグイン開発で学んだ教訓
 
8時間耐久 PHP構築の教室
8時間耐久 PHP構築の教室8時間耐久 PHP構築の教室
8時間耐久 PHP構築の教室
 
ダイナミック広告の改善と拡大
ダイナミック広告の改善と拡大ダイナミック広告の改善と拡大
ダイナミック広告の改善と拡大
 
Webプログラマの為のUnity入門
Webプログラマの為のUnity入門Webプログラマの為のUnity入門
Webプログラマの為のUnity入門
 
【アシアル塾】PHPオブジェクト指向再入門・第一回クラスとオブジェクト
【アシアル塾】PHPオブジェクト指向再入門・第一回クラスとオブジェクト【アシアル塾】PHPオブジェクト指向再入門・第一回クラスとオブジェクト
【アシアル塾】PHPオブジェクト指向再入門・第一回クラスとオブジェクト
 
ゴールデンウィークに最適な学習コンテンツ
ゴールデンウィークに最適な学習コンテンツゴールデンウィークに最適な学習コンテンツ
ゴールデンウィークに最適な学習コンテンツ
 
【アシアル塾】Linux超入門編・第一回はじめてのターミナル(黒い画面)操作
【アシアル塾】Linux超入門編・第一回はじめてのターミナル(黒い画面)操作【アシアル塾】Linux超入門編・第一回はじめてのターミナル(黒い画面)操作
【アシアル塾】Linux超入門編・第一回はじめてのターミナル(黒い画面)操作
 
JINS MEME DEVELOPER HANDS-ON (Monaca / Apache Cordova編)
JINS MEME DEVELOPER HANDS-ON (Monaca / Apache Cordova編)JINS MEME DEVELOPER HANDS-ON (Monaca / Apache Cordova編)
JINS MEME DEVELOPER HANDS-ON (Monaca / Apache Cordova編)
 
今、最もイケてるPHPフレームワークLaravel4
今、最もイケてるPHPフレームワークLaravel4今、最もイケてるPHPフレームワークLaravel4
今、最もイケてるPHPフレームワークLaravel4
 
40分濃縮 PHP classの教室
40分濃縮 PHP classの教室40分濃縮 PHP classの教室
40分濃縮 PHP classの教室
 
新標準PSRに学ぶきれいなPHP
新標準PSRに学ぶきれいなPHP新標準PSRに学ぶきれいなPHP
新標準PSRに学ぶきれいなPHP
 

Similar to 超初心者向け!Php勉強法とプログラミングの基礎の基礎

CRF を使った Web 本文抽出
CRF を使った Web 本文抽出CRF を使った Web 本文抽出
CRF を使った Web 本文抽出Shuyo Nakatani
 
知って得する標準関数の使い方
知って得する標準関数の使い方知って得する標準関数の使い方
知って得する標準関数の使い方Soudai Sone
 
2018年度 若手技術者向け講座 リファクタリング
2018年度 若手技術者向け講座 リファクタリング2018年度 若手技術者向け講座 リファクタリング
2018年度 若手技術者向け講座 リファクタリングkeki3
 
PHPCON_TOKYO_2022_Bigginer.pptx
PHPCON_TOKYO_2022_Bigginer.pptxPHPCON_TOKYO_2022_Bigginer.pptx
PHPCON_TOKYO_2022_Bigginer.pptxHideo Kashioka
 
JavaScriptことはじめ
JavaScriptことはじめJavaScriptことはじめ
JavaScriptことはじめYuki Ishikawa
 
PHP 2大 web フレームワークの徹底比較!
PHP 2大 web フレームワークの徹底比較!PHP 2大 web フレームワークの徹底比較!
PHP 2大 web フレームワークの徹底比較!Shohei Okada
 
PHPの今とこれから2023
PHPの今とこれから2023PHPの今とこれから2023
PHPの今とこれから2023Rui Hirokawa
 
WordPressのためのphp基礎の基礎
WordPressのためのphp基礎の基礎WordPressのためのphp基礎の基礎
WordPressのためのphp基礎の基礎Yusuke Hayasaki
 
PSR-1 と PSR-2 を 5分でざっくり理解する
PSR-1 と PSR-2 を5分でざっくり理解するPSR-1 と PSR-2 を5分でざっくり理解する
PSR-1 と PSR-2 を 5分でざっくり理解するWataru Terada
 
プログラマ進化論
プログラマ進化論プログラマ進化論
プログラマ進化論Sotaro Omura
 
泥沼の中のパフォーマンスチューニング #JJUG
泥沼の中のパフォーマンスチューニング #JJUG泥沼の中のパフォーマンスチューニング #JJUG
泥沼の中のパフォーマンスチューニング #JJUGSatoshi Kubo
 

Similar to 超初心者向け!Php勉強法とプログラミングの基礎の基礎 (13)

CRF を使った Web 本文抽出
CRF を使った Web 本文抽出CRF を使った Web 本文抽出
CRF を使った Web 本文抽出
 
知って得する標準関数の使い方
知って得する標準関数の使い方知って得する標準関数の使い方
知って得する標準関数の使い方
 
2018年度 若手技術者向け講座 リファクタリング
2018年度 若手技術者向け講座 リファクタリング2018年度 若手技術者向け講座 リファクタリング
2018年度 若手技術者向け講座 リファクタリング
 
C言語講習会2
C言語講習会2C言語講習会2
C言語講習会2
 
PHPCON_TOKYO_2022_Bigginer.pptx
PHPCON_TOKYO_2022_Bigginer.pptxPHPCON_TOKYO_2022_Bigginer.pptx
PHPCON_TOKYO_2022_Bigginer.pptx
 
JavaScriptことはじめ
JavaScriptことはじめJavaScriptことはじめ
JavaScriptことはじめ
 
PHP 2大 web フレームワークの徹底比較!
PHP 2大 web フレームワークの徹底比較!PHP 2大 web フレームワークの徹底比較!
PHP 2大 web フレームワークの徹底比較!
 
PHPの今とこれから2023
PHPの今とこれから2023PHPの今とこれから2023
PHPの今とこれから2023
 
WordPressのためのphp基礎の基礎
WordPressのためのphp基礎の基礎WordPressのためのphp基礎の基礎
WordPressのためのphp基礎の基礎
 
PSR-1 と PSR-2 を 5分でざっくり理解する
PSR-1 と PSR-2 を5分でざっくり理解するPSR-1 と PSR-2 を5分でざっくり理解する
PSR-1 と PSR-2 を 5分でざっくり理解する
 
Clojrue 13 testing
Clojrue 13 testingClojrue 13 testing
Clojrue 13 testing
 
プログラマ進化論
プログラマ進化論プログラマ進化論
プログラマ進化論
 
泥沼の中のパフォーマンスチューニング #JJUG
泥沼の中のパフォーマンスチューニング #JJUG泥沼の中のパフォーマンスチューニング #JJUG
泥沼の中のパフォーマンスチューニング #JJUG
 

超初心者向け!Php勉強法とプログラミングの基礎の基礎