SlideShare a Scribd company logo
1 of 52
Download to read offline
PHPの教室

  foreachを極める
   超頻出する文法を徹底的に掘り尽くす!




                  yando @ Shimokita.php
提供




     yando @ Shimokita.php
@yando

• Yusuke Ando
• PHPer
• Engine Yard inc.
• github.com/yandod/candycane

                           yando @ Shimokita.php
おしながき

• foreachの基礎
• やりがちな失敗
• 応用的な書き方


               yando @ Shimokita.php
基礎



     yando @ Shimokita.php
基本1
   元になるデータ


   $listの数だけ実行



  $key にインデックス
      $valに内容




        yando @ Shimokita.php
foreach

• 超優良ループ構文
• 平均的なPHPerは一日に5回は書く
• エラーの原因にもなる
• いろいろな書き方がある

                 yando @ Shimokita.php
We♥foreach

• 無限ループしない
• たいていのデータが配列
• 配列をそのまま流せるので便利
• Webアプリは一覧表示が多い

               yando @ Shimokita.php
forとかダルい

     無限ループのリスク



      []などが多い




         yando @ Shimokita.php
while ...




無理するなと言いたい

             yando @ Shimokita.php
ひとまず

• PHPでループを書くならforeach
• 使い方でphper度がわかる
• よく使うからこそ重要
• 細かい挙動も知っておくべき

                   yando @ Shimokita.php
基本2
  元になる連想配列


  $listの数だけ実行




      $key にキー
       $valに内容




         yando @ Shimokita.php
基本3
  元になる連想配列


  $listの数だけ実行




   $valに内容
  キーは無視される




       yando @ Shimokita.php
基本4
  ここからforeach




  HTMLが書きやすい




      foreach終了




         yando @ Shimokita.php
やりがちな失敗



      yando @ Shimokita.php
失敗

• 配列チェック漏れ
• 要素の更新
• ループ終了後の変数
• 多重foreach

              yando @ Shimokita.php
配列?

• foreachは配列しか回せない
• データ取得結果がfalse null String
• 処理できない
• 空の配列であれば問題ない

                       yando @ Shimokita.php
失敗1
  関数の結果を回す


    arrayではない
  (エラー時にありがち)


      実行時エラー




        yando @ Shimokita.php
失敗1
        配列かチェック



        配列の時だけ実行




ネストが深くなってしまう

           yando @ Shimokita.php
失敗1
           配列で無ければ、
            空の配列にする



           配列と決め打ち



            手抜きのnull


呼び出し側に責務が増えてしまっている

                yando @ Shimokita.php
教訓
• 関数が返すデータの型の一貫性
• エラー時の挙動を見落としがち
• 検索結果が0件だとエラーで画面がめ
 ちゃくちゃになってしまったりすると
 残念感アップ



               yando @ Shimokita.php
更新

• ループ内から変数を更新
• 意図しない処理にならないか
• データの大破壊


                  yando @ Shimokita.php
失敗2

  各要素を上書き




  全て更新された




      yando @ Shimokita.php
失敗2

      各要素を上書き




  更新されていない




         yando @ Shimokita.php
失敗2 改
        参照代入




    更新された!




         yando @ Shimokita.php
失敗2
          オブジェクトの配列


          各要素を上書き




更新された


              yando @ Shimokita.php
教訓

• 配列の値は通常はコピーされる
• & を付けた代入参照は黒魔術
• オブジェクトはコピーされない
• 一時変数への代入は避ける方が無難

               yando @ Shimokita.php
明解な方を使う

     オリジナルを更新




      更新しないかも
    (配列 or 参照代入 or
      オブジェクト)


          yando @ Shimokita.php
ループの後

• foreachで最後に使った変数が残る
• ループが実行されない場合は未定義
• あてにしてはいけない


                  yando @ Shimokita.php
失敗3



  ループ外で使えてしまう




      yando @ Shimokita.php
失敗3


      変数が未定義




        yando @ Shimokita.php
多重

• foreachは便利
• データが複雑だとループ内でループ
• 2重が限度
• 3重以上は人間には読解が難しい

               yando @ Shimokita.php
読みづらい




        yando @ Shimokita.php
応用



     yando @ Shimokita.php
応用

• 件数判定
• 継続・中止
• イテレーター
• ジェネレーター

            yando @ Shimokita.php
応用1


 自分でカウンタを作る


 自分でインクリメント




       yando @ Shimokita.php
継続・中止

• continueで次のループへ
• breakでループをストップ
• 処理しないでよいデータをスキップ


               yando @ Shimokita.php
応用2


      4バイト以下の時

      次のループへ




        yando @ Shimokita.php
応用2


      4バイト以下の時



      ループ全体を中止




         yando @ Shimokita.php
イテレーター

• Iteratorインターフェースを実装
• rewind current key next valid
• 上記のメソッドを実装
• オブジェクトのデータや処理を回せる

                         yando @ Shimokita.php
回った




      yando @ Shimokita.php
イテレーター

• is_array で判定できない
• 複雑な処理ができるが
• それってSPLで出来るかも?


                     yando @ Shimokita.php
イテレーター


    任意の件数を取り出す




     正規表現マッチ


        yando @ Shimokita.php
ジェネレーター

• PHP5.5からの新機能
• イテレーターをもっと簡単に
• 「前に進むだけのイテレーター」
• returnの替わりにyieldでデータを返す

                    yando @ Shimokita.php
動くぞ
   1回分のデータ


 yieldを含む関数を指定




   普通に回せた!




         yando @ Shimokita.php
活用法

• 巨大な配列を作らずに処理
• 通常のforeachは事前に配列が必要
• 巨大なデータやファイル処理を高速化


                 yando @ Shimokita.php
配列版
  行数分の配列



      使用量計測



  普通に回せた!




        yando @ Shimokita.php
ジェネレータ版
    ファイルポインタ



    一行づつyield




         yando @ Shimokita.php
結果




 ジェネレータは大データ
   でもメモリを節約


     yando @ Shimokita.php
まとめ



      yando @ Shimokita.php
基本が大事

• 頻繁に使うからこそ綺麗に
• 摩訶不思議なループを書かない
• 回しにくい関数を作らない


               yando @ Shimokita.php
おまけ


• 実はオブジェクトは何でも回せる
• PHP5.5なら代入にlistが使える



                   yando @ Shimokita.php

More Related Content

What's hot

CEDEC2015 サブディビジョンサーフェスの すべてがわかる
CEDEC2015 サブディビジョンサーフェスの すべてがわかるCEDEC2015 サブディビジョンサーフェスの すべてがわかる
CEDEC2015 サブディビジョンサーフェスの すべてがわかるTakahito Tejima
 
運用設計の必要性と5年後のIT部門の姿について
運用設計の必要性と5年後のIT部門の姿について運用設計の必要性と5年後のIT部門の姿について
運用設計の必要性と5年後のIT部門の姿についてUNIRITA Incorporated
 
継承辺りのもしかしたらマイナーかもしれない C#
継承辺りのもしかしたらマイナーかもしれない C#継承辺りのもしかしたらマイナーかもしれない C#
継承辺りのもしかしたらマイナーかもしれない C#m ishizaki
 
PostgreSQLの行レベルセキュリティと SpringAOPでマルチテナントの ユーザー間情報漏洩を防止する (JJUG CCC 2021 Spring)
PostgreSQLの行レベルセキュリティと SpringAOPでマルチテナントの ユーザー間情報漏洩を防止する (JJUG CCC 2021 Spring)PostgreSQLの行レベルセキュリティと SpringAOPでマルチテナントの ユーザー間情報漏洩を防止する (JJUG CCC 2021 Spring)
PostgreSQLの行レベルセキュリティと SpringAOPでマルチテナントの ユーザー間情報漏洩を防止する (JJUG CCC 2021 Spring)Koichiro Matsuoka
 
.NET Core時代のCI/CD
.NET Core時代のCI/CD.NET Core時代のCI/CD
.NET Core時代のCI/CDYuta Matsumura
 
C++のビルド高速化について
C++のビルド高速化についてC++のビルド高速化について
C++のビルド高速化についてAimingStudy
 
Win32 APIをてなずけよう
Win32 APIをてなずけようWin32 APIをてなずけよう
Win32 APIをてなずけようKouji Matsui
 
iOSでライブラリを提供する際に気をつけたいこと
iOSでライブラリを提供する際に気をつけたいことiOSでライブラリを提供する際に気をつけたいこと
iOSでライブラリを提供する際に気をつけたいことasakahara
 
導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について
導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について
導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来についてshinjiigarashi
 
きつねさんでもわかるLlvm読書会 第2回
きつねさんでもわかるLlvm読書会 第2回きつねさんでもわかるLlvm読書会 第2回
きつねさんでもわかるLlvm読書会 第2回Tomoya Kawanishi
 
C++でできる!OS自作入門
C++でできる!OS自作入門C++でできる!OS自作入門
C++でできる!OS自作入門uchan_nos
 
Jupyter notebook を用いた文芸的インフラ運用のススメ
Jupyter notebook を用いた文芸的インフラ運用のススメJupyter notebook を用いた文芸的インフラ運用のススメ
Jupyter notebook を用いた文芸的インフラ運用のススメNo Bu
 
Redmineの開発状況のこれまでと現在
Redmineの開発状況のこれまでと現在Redmineの開発状況のこれまでと現在
Redmineの開発状況のこれまでと現在Go Maeda
 
Ruby での外部コマンドの実行について
Ruby での外部コマンドの実行についてRuby での外部コマンドの実行について
Ruby での外部コマンドの実行についてTomoya Kawanishi
 
Fluentd, Digdag, Embulkを用いたデータ分析基盤の始め方
Fluentd, Digdag, Embulkを用いたデータ分析基盤の始め方Fluentd, Digdag, Embulkを用いたデータ分析基盤の始め方
Fluentd, Digdag, Embulkを用いたデータ分析基盤の始め方Kentaro Yoshida
 
OAuth 2.0 Web Messaging Response Mode - OpenID Summit Tokyo 2015
OAuth 2.0 Web Messaging Response Mode - OpenID Summit Tokyo 2015OAuth 2.0 Web Messaging Response Mode - OpenID Summit Tokyo 2015
OAuth 2.0 Web Messaging Response Mode - OpenID Summit Tokyo 2015Toru Yamaguchi
 
ドメイン駆動設計 基本を理解する
ドメイン駆動設計 基本を理解するドメイン駆動設計 基本を理解する
ドメイン駆動設計 基本を理解する増田 亨
 
PHPの今とこれから2021
PHPの今とこれから2021PHPの今とこれから2021
PHPの今とこれから2021Rui Hirokawa
 
インメモリーで超高速処理を実現する場合のカギ
インメモリーで超高速処理を実現する場合のカギインメモリーで超高速処理を実現する場合のカギ
インメモリーで超高速処理を実現する場合のカギMasaki Yamakawa
 
JSでファミコンエミュレータを作った時の話
JSでファミコンエミュレータを作った時の話JSでファミコンエミュレータを作った時の話
JSでファミコンエミュレータを作った時の話sairoutine
 

What's hot (20)

CEDEC2015 サブディビジョンサーフェスの すべてがわかる
CEDEC2015 サブディビジョンサーフェスの すべてがわかるCEDEC2015 サブディビジョンサーフェスの すべてがわかる
CEDEC2015 サブディビジョンサーフェスの すべてがわかる
 
運用設計の必要性と5年後のIT部門の姿について
運用設計の必要性と5年後のIT部門の姿について運用設計の必要性と5年後のIT部門の姿について
運用設計の必要性と5年後のIT部門の姿について
 
継承辺りのもしかしたらマイナーかもしれない C#
継承辺りのもしかしたらマイナーかもしれない C#継承辺りのもしかしたらマイナーかもしれない C#
継承辺りのもしかしたらマイナーかもしれない C#
 
PostgreSQLの行レベルセキュリティと SpringAOPでマルチテナントの ユーザー間情報漏洩を防止する (JJUG CCC 2021 Spring)
PostgreSQLの行レベルセキュリティと SpringAOPでマルチテナントの ユーザー間情報漏洩を防止する (JJUG CCC 2021 Spring)PostgreSQLの行レベルセキュリティと SpringAOPでマルチテナントの ユーザー間情報漏洩を防止する (JJUG CCC 2021 Spring)
PostgreSQLの行レベルセキュリティと SpringAOPでマルチテナントの ユーザー間情報漏洩を防止する (JJUG CCC 2021 Spring)
 
.NET Core時代のCI/CD
.NET Core時代のCI/CD.NET Core時代のCI/CD
.NET Core時代のCI/CD
 
C++のビルド高速化について
C++のビルド高速化についてC++のビルド高速化について
C++のビルド高速化について
 
Win32 APIをてなずけよう
Win32 APIをてなずけようWin32 APIをてなずけよう
Win32 APIをてなずけよう
 
iOSでライブラリを提供する際に気をつけたいこと
iOSでライブラリを提供する際に気をつけたいことiOSでライブラリを提供する際に気をつけたいこと
iOSでライブラリを提供する際に気をつけたいこと
 
導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について
導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について
導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について
 
きつねさんでもわかるLlvm読書会 第2回
きつねさんでもわかるLlvm読書会 第2回きつねさんでもわかるLlvm読書会 第2回
きつねさんでもわかるLlvm読書会 第2回
 
C++でできる!OS自作入門
C++でできる!OS自作入門C++でできる!OS自作入門
C++でできる!OS自作入門
 
Jupyter notebook を用いた文芸的インフラ運用のススメ
Jupyter notebook を用いた文芸的インフラ運用のススメJupyter notebook を用いた文芸的インフラ運用のススメ
Jupyter notebook を用いた文芸的インフラ運用のススメ
 
Redmineの開発状況のこれまでと現在
Redmineの開発状況のこれまでと現在Redmineの開発状況のこれまでと現在
Redmineの開発状況のこれまでと現在
 
Ruby での外部コマンドの実行について
Ruby での外部コマンドの実行についてRuby での外部コマンドの実行について
Ruby での外部コマンドの実行について
 
Fluentd, Digdag, Embulkを用いたデータ分析基盤の始め方
Fluentd, Digdag, Embulkを用いたデータ分析基盤の始め方Fluentd, Digdag, Embulkを用いたデータ分析基盤の始め方
Fluentd, Digdag, Embulkを用いたデータ分析基盤の始め方
 
OAuth 2.0 Web Messaging Response Mode - OpenID Summit Tokyo 2015
OAuth 2.0 Web Messaging Response Mode - OpenID Summit Tokyo 2015OAuth 2.0 Web Messaging Response Mode - OpenID Summit Tokyo 2015
OAuth 2.0 Web Messaging Response Mode - OpenID Summit Tokyo 2015
 
ドメイン駆動設計 基本を理解する
ドメイン駆動設計 基本を理解するドメイン駆動設計 基本を理解する
ドメイン駆動設計 基本を理解する
 
PHPの今とこれから2021
PHPの今とこれから2021PHPの今とこれから2021
PHPの今とこれから2021
 
インメモリーで超高速処理を実現する場合のカギ
インメモリーで超高速処理を実現する場合のカギインメモリーで超高速処理を実現する場合のカギ
インメモリーで超高速処理を実現する場合のカギ
 
JSでファミコンエミュレータを作った時の話
JSでファミコンエミュレータを作った時の話JSでファミコンエミュレータを作った時の話
JSでファミコンエミュレータを作った時の話
 

Viewers also liked

PHPer女子が語る!こんなコードを書くヒトはモテない~きほん編~@PHPカンファレンス2014
PHPer女子が語る!こんなコードを書くヒトはモテない~きほん編~@PHPカンファレンス2014PHPer女子が語る!こんなコードを書くヒトはモテない~きほん編~@PHPカンファレンス2014
PHPer女子が語る!こんなコードを書くヒトはモテない~きほん編~@PHPカンファレンス2014Hikari Fukasawa
 
PHPer女子が語る2015!こんなコードを書くヒトはモテない〜コラボ編〜@PHPカンファレンス2015 #phpcon2015
PHPer女子が語る2015!こんなコードを書くヒトはモテない〜コラボ編〜@PHPカンファレンス2015 #phpcon2015PHPer女子が語る2015!こんなコードを書くヒトはモテない〜コラボ編〜@PHPカンファレンス2015 #phpcon2015
PHPer女子が語る2015!こんなコードを書くヒトはモテない〜コラボ編〜@PHPカンファレンス2015 #phpcon2015Hikari Fukasawa
 
PHP5.5新機能「ジェネレータ」初心者入門
PHP5.5新機能「ジェネレータ」初心者入門PHP5.5新機能「ジェネレータ」初心者入門
PHP5.5新機能「ジェネレータ」初心者入門kwatch
 
40分濃縮 PHP classの教室
40分濃縮 PHP classの教室40分濃縮 PHP classの教室
40分濃縮 PHP classの教室Yusuke Ando
 
ドメイン駆動設計を実践するプログラマーの悩み
ドメイン駆動設計を実践するプログラマーの悩みドメイン駆動設計を実践するプログラマーの悩み
ドメイン駆動設計を実践するプログラマーの悩みhaljik Seiji
 
90分間濃縮 PHPエラーの教室
90分間濃縮 PHPエラーの教室90分間濃縮 PHPエラーの教室
90分間濃縮 PHPエラーの教室Yusuke Ando
 
Tips and tricks to win kaggle data science competitions
Tips and tricks to win kaggle data science competitionsTips and tricks to win kaggle data science competitions
Tips and tricks to win kaggle data science competitionsDarius Barušauskas
 
Facebookページでユーザーからの最近の投稿を表示しよう
Facebookページでユーザーからの最近の投稿を表示しようFacebookページでユーザーからの最近の投稿を表示しよう
Facebookページでユーザーからの最近の投稿を表示しよう新潟コンサルタント横田秀珠
 
ネットビジネスで把握すべき予測・訪問・成約の3キーワード
ネットビジネスで把握すべき予測・訪問・成約の3キーワードネットビジネスで把握すべき予測・訪問・成約の3キーワード
ネットビジネスで把握すべき予測・訪問・成約の3キーワード新潟コンサルタント横田秀珠
 
SEOとSNS、友達と他人、個人と会社、誰から何を買うのか?セミナー
SEOとSNS、友達と他人、個人と会社、誰から何を買うのか?セミナーSEOとSNS、友達と他人、個人と会社、誰から何を買うのか?セミナー
SEOとSNS、友達と他人、個人と会社、誰から何を買うのか?セミナー新潟コンサルタント横田秀珠
 
山口県山陽小野田市Facebookセミナーin小野田商工会議所
山口県山陽小野田市Facebookセミナーin小野田商工会議所山口県山陽小野田市Facebookセミナーin小野田商工会議所
山口県山陽小野田市Facebookセミナーin小野田商工会議所新潟コンサルタント横田秀珠
 
Ejemplo Linq To SQL
Ejemplo Linq To SQLEjemplo Linq To SQL
Ejemplo Linq To SQLjcfarit
 
Introduccion A Linq 1205779028184546 5
Introduccion A Linq 1205779028184546 5Introduccion A Linq 1205779028184546 5
Introduccion A Linq 1205779028184546 5google
 
Phpstormちょっといい話
Phpstormちょっといい話Phpstormちょっといい話
Phpstormちょっといい話Hisateru Tanaka
 
只見線の復旧状況を小出駅ー大白川駅の車窓から往復で撮影
只見線の復旧状況を小出駅ー大白川駅の車窓から往復で撮影只見線の復旧状況を小出駅ー大白川駅の車窓から往復で撮影
只見線の復旧状況を小出駅ー大白川駅の車窓から往復で撮影新潟コンサルタント横田秀珠
 

Viewers also liked (19)

PHPer女子が語る!こんなコードを書くヒトはモテない~きほん編~@PHPカンファレンス2014
PHPer女子が語る!こんなコードを書くヒトはモテない~きほん編~@PHPカンファレンス2014PHPer女子が語る!こんなコードを書くヒトはモテない~きほん編~@PHPカンファレンス2014
PHPer女子が語る!こんなコードを書くヒトはモテない~きほん編~@PHPカンファレンス2014
 
PHPコアから読み解く定石の嘘ホント #phpcon2013
PHPコアから読み解く定石の嘘ホント #phpcon2013PHPコアから読み解く定石の嘘ホント #phpcon2013
PHPコアから読み解く定石の嘘ホント #phpcon2013
 
本当に怖いパフォーマンスが悪い実装 #phpcon2013
本当に怖いパフォーマンスが悪い実装 #phpcon2013本当に怖いパフォーマンスが悪い実装 #phpcon2013
本当に怖いパフォーマンスが悪い実装 #phpcon2013
 
PHPer女子が語る2015!こんなコードを書くヒトはモテない〜コラボ編〜@PHPカンファレンス2015 #phpcon2015
PHPer女子が語る2015!こんなコードを書くヒトはモテない〜コラボ編〜@PHPカンファレンス2015 #phpcon2015PHPer女子が語る2015!こんなコードを書くヒトはモテない〜コラボ編〜@PHPカンファレンス2015 #phpcon2015
PHPer女子が語る2015!こんなコードを書くヒトはモテない〜コラボ編〜@PHPカンファレンス2015 #phpcon2015
 
PHP5.5新機能「ジェネレータ」初心者入門
PHP5.5新機能「ジェネレータ」初心者入門PHP5.5新機能「ジェネレータ」初心者入門
PHP5.5新機能「ジェネレータ」初心者入門
 
40分濃縮 PHP classの教室
40分濃縮 PHP classの教室40分濃縮 PHP classの教室
40分濃縮 PHP classの教室
 
ドメイン駆動設計を実践するプログラマーの悩み
ドメイン駆動設計を実践するプログラマーの悩みドメイン駆動設計を実践するプログラマーの悩み
ドメイン駆動設計を実践するプログラマーの悩み
 
90分間濃縮 PHPエラーの教室
90分間濃縮 PHPエラーの教室90分間濃縮 PHPエラーの教室
90分間濃縮 PHPエラーの教室
 
Tips and tricks to win kaggle data science competitions
Tips and tricks to win kaggle data science competitionsTips and tricks to win kaggle data science competitions
Tips and tricks to win kaggle data science competitions
 
Facebookページでユーザーからの最近の投稿を表示しよう
Facebookページでユーザーからの最近の投稿を表示しようFacebookページでユーザーからの最近の投稿を表示しよう
Facebookページでユーザーからの最近の投稿を表示しよう
 
ネットビジネスで把握すべき予測・訪問・成約の3キーワード
ネットビジネスで把握すべき予測・訪問・成約の3キーワードネットビジネスで把握すべき予測・訪問・成約の3キーワード
ネットビジネスで把握すべき予測・訪問・成約の3キーワード
 
SEOとSNS、友達と他人、個人と会社、誰から何を買うのか?セミナー
SEOとSNS、友達と他人、個人と会社、誰から何を買うのか?セミナーSEOとSNS、友達と他人、個人と会社、誰から何を買うのか?セミナー
SEOとSNS、友達と他人、個人と会社、誰から何を買うのか?セミナー
 
山口県山陽小野田市Facebookセミナーin小野田商工会議所
山口県山陽小野田市Facebookセミナーin小野田商工会議所山口県山陽小野田市Facebookセミナーin小野田商工会議所
山口県山陽小野田市Facebookセミナーin小野田商工会議所
 
Ejemplo Linq To SQL
Ejemplo Linq To SQLEjemplo Linq To SQL
Ejemplo Linq To SQL
 
栃木Twitterセミナーin大田原法人会
栃木Twitterセミナーin大田原法人会栃木Twitterセミナーin大田原法人会
栃木Twitterセミナーin大田原法人会
 
Introduccion A Linq 1205779028184546 5
Introduccion A Linq 1205779028184546 5Introduccion A Linq 1205779028184546 5
Introduccion A Linq 1205779028184546 5
 
Programación con linq
Programación con linqProgramación con linq
Programación con linq
 
Phpstormちょっといい話
Phpstormちょっといい話Phpstormちょっといい話
Phpstormちょっといい話
 
只見線の復旧状況を小出駅ー大白川駅の車窓から往復で撮影
只見線の復旧状況を小出駅ー大白川駅の車窓から往復で撮影只見線の復旧状況を小出駅ー大白川駅の車窓から往復で撮影
只見線の復旧状況を小出駅ー大白川駅の車窓から往復で撮影
 

Similar to PHPの教室「foreachを極める」

Good Parts of PHP and the UNIX Philosophy
Good Parts of PHP and the UNIX PhilosophyGood Parts of PHP and the UNIX Philosophy
Good Parts of PHP and the UNIX PhilosophyYuya Takeyama
 
YAPC::Asia 2014 - 半端なPHPDisでPHPerに陰で笑われないためのPerl Monger向け最新PHP事情
YAPC::Asia 2014 - 半端なPHPDisでPHPerに陰で笑われないためのPerl Monger向け最新PHP事情YAPC::Asia 2014 - 半端なPHPDisでPHPerに陰で笑われないためのPerl Monger向け最新PHP事情
YAPC::Asia 2014 - 半端なPHPDisでPHPerに陰で笑われないためのPerl Monger向け最新PHP事情Junichi Ishida
 
PHPカンファレンス2014の懇親会飛び込みLT資料
PHPカンファレンス2014の懇親会飛び込みLT資料PHPカンファレンス2014の懇親会飛び込みLT資料
PHPカンファレンス2014の懇親会飛び込みLT資料Junichi Ishida
 
WordPress中級者への道!テンプレートタグはどう動くのか!?
WordPress中級者への道!テンプレートタグはどう動くのか!?WordPress中級者への道!テンプレートタグはどう動くのか!?
WordPress中級者への道!テンプレートタグはどう動くのか!?Shinichi Nishikawa
 
Unity2015_No10_~UGUI&Audio~
Unity2015_No10_~UGUI&Audio~Unity2015_No10_~UGUI&Audio~
Unity2015_No10_~UGUI&Audio~CHY72
 
FP習熟度レベルとFSharpxのIteratee
FP習熟度レベルとFSharpxのIterateeFP習熟度レベルとFSharpxのIteratee
FP習熟度レベルとFSharpxのIterateepocketberserker
 
Hello world make
Hello world makeHello world make
Hello world makemitsu1119
 
【デブサミ福岡B5】コードレビューの進め方~全員で行う品質の維持~
【デブサミ福岡B5】コードレビューの進め方~全員で行う品質の維持~【デブサミ福岡B5】コードレビューの進め方~全員で行う品質の維持~
【デブサミ福岡B5】コードレビューの進め方~全員で行う品質の維持~Developers Summit
 

Similar to PHPの教室「foreachを極める」 (8)

Good Parts of PHP and the UNIX Philosophy
Good Parts of PHP and the UNIX PhilosophyGood Parts of PHP and the UNIX Philosophy
Good Parts of PHP and the UNIX Philosophy
 
YAPC::Asia 2014 - 半端なPHPDisでPHPerに陰で笑われないためのPerl Monger向け最新PHP事情
YAPC::Asia 2014 - 半端なPHPDisでPHPerに陰で笑われないためのPerl Monger向け最新PHP事情YAPC::Asia 2014 - 半端なPHPDisでPHPerに陰で笑われないためのPerl Monger向け最新PHP事情
YAPC::Asia 2014 - 半端なPHPDisでPHPerに陰で笑われないためのPerl Monger向け最新PHP事情
 
PHPカンファレンス2014の懇親会飛び込みLT資料
PHPカンファレンス2014の懇親会飛び込みLT資料PHPカンファレンス2014の懇親会飛び込みLT資料
PHPカンファレンス2014の懇親会飛び込みLT資料
 
WordPress中級者への道!テンプレートタグはどう動くのか!?
WordPress中級者への道!テンプレートタグはどう動くのか!?WordPress中級者への道!テンプレートタグはどう動くのか!?
WordPress中級者への道!テンプレートタグはどう動くのか!?
 
Unity2015_No10_~UGUI&Audio~
Unity2015_No10_~UGUI&Audio~Unity2015_No10_~UGUI&Audio~
Unity2015_No10_~UGUI&Audio~
 
FP習熟度レベルとFSharpxのIteratee
FP習熟度レベルとFSharpxのIterateeFP習熟度レベルとFSharpxのIteratee
FP習熟度レベルとFSharpxのIteratee
 
Hello world make
Hello world makeHello world make
Hello world make
 
【デブサミ福岡B5】コードレビューの進め方~全員で行う品質の維持~
【デブサミ福岡B5】コードレビューの進め方~全員で行う品質の維持~【デブサミ福岡B5】コードレビューの進め方~全員で行う品質の維持~
【デブサミ福岡B5】コードレビューの進め方~全員で行う品質の維持~
 

More from Yusuke Ando

ダイナミック広告の改善と拡大
ダイナミック広告の改善と拡大ダイナミック広告の改善と拡大
ダイナミック広告の改善と拡大Yusuke Ando
 
DevOpsを実現するChef活用テクニック
DevOpsを実現するChef活用テクニックDevOpsを実現するChef活用テクニック
DevOpsを実現するChef活用テクニックYusuke Ando
 
DevOpsを実現する為のChef実践テクニック Chef12対応版
DevOpsを実現する為のChef実践テクニック Chef12対応版DevOpsを実現する為のChef実践テクニック Chef12対応版
DevOpsを実現する為のChef実践テクニック Chef12対応版Yusuke Ando
 
Testing your app with Selenium on Travis CI
Testing your app with Selenium on Travis CITesting your app with Selenium on Travis CI
Testing your app with Selenium on Travis CIYusuke Ando
 
Travis CIで実現するPHPアプリの自動テスト
Travis CIで実現するPHPアプリの自動テストTravis CIで実現するPHPアプリの自動テスト
Travis CIで実現するPHPアプリの自動テストYusuke Ando
 
Shimokita.Unity Detonatorで爆発
Shimokita.Unity Detonatorで爆発Shimokita.Unity Detonatorで爆発
Shimokita.Unity Detonatorで爆発Yusuke Ando
 
Shimokita.Unity RigidbodyとColliderで衝突
Shimokita.Unity RigidbodyとColliderで衝突Shimokita.Unity RigidbodyとColliderで衝突
Shimokita.Unity RigidbodyとColliderで衝突Yusuke Ando
 
Webプログラマの為のUnity入門
Webプログラマの為のUnity入門Webプログラマの為のUnity入門
Webプログラマの為のUnity入門Yusuke Ando
 
ゴールデンウィークに最適な学習コンテンツ
ゴールデンウィークに最適な学習コンテンツゴールデンウィークに最適な学習コンテンツ
ゴールデンウィークに最適な学習コンテンツYusuke Ando
 
Travis CIですぐに始める継続的インテグレーション
Travis CIですぐに始める継続的インテグレーションTravis CIですぐに始める継続的インテグレーション
Travis CIですぐに始める継続的インテグレーションYusuke Ando
 
ブログやサイトのJekyllへの移行
ブログやサイトのJekyllへの移行ブログやサイトのJekyllへの移行
ブログやサイトのJekyllへの移行Yusuke Ando
 
PHPとTravis CIでブラウザテスト
PHPとTravis CIでブラウザテストPHPとTravis CIでブラウザテスト
PHPとTravis CIでブラウザテストYusuke Ando
 
Shimokita.Unity パリの街をユニティちゃんが駆ける
Shimokita.Unity パリの街をユニティちゃんが駆けるShimokita.Unity パリの街をユニティちゃんが駆ける
Shimokita.Unity パリの街をユニティちゃんが駆けるYusuke Ando
 
Engine Yardで作る NetCommons3のクラウド環境
Engine Yardで作る NetCommons3のクラウド環境Engine Yardで作る NetCommons3のクラウド環境
Engine Yardで作る NetCommons3のクラウド環境Yusuke Ando
 
Engine Yard Cloud
Engine Yard CloudEngine Yard Cloud
Engine Yard CloudYusuke Ando
 
最近のCandyCane - PHP版Redmineでタスク管理を始めよう
最近のCandyCane - PHP版Redmineでタスク管理を始めよう最近のCandyCane - PHP版Redmineでタスク管理を始めよう
最近のCandyCane - PHP版Redmineでタスク管理を始めようYusuke Ando
 

More from Yusuke Ando (20)

ダイナミック広告の改善と拡大
ダイナミック広告の改善と拡大ダイナミック広告の改善と拡大
ダイナミック広告の改善と拡大
 
DevOpsを実現するChef活用テクニック
DevOpsを実現するChef活用テクニックDevOpsを実現するChef活用テクニック
DevOpsを実現するChef活用テクニック
 
DevOpsを実現する為のChef実践テクニック Chef12対応版
DevOpsを実現する為のChef実践テクニック Chef12対応版DevOpsを実現する為のChef実践テクニック Chef12対応版
DevOpsを実現する為のChef実践テクニック Chef12対応版
 
Testing your app with Selenium on Travis CI
Testing your app with Selenium on Travis CITesting your app with Selenium on Travis CI
Testing your app with Selenium on Travis CI
 
Travis CIで実現するPHPアプリの自動テスト
Travis CIで実現するPHPアプリの自動テストTravis CIで実現するPHPアプリの自動テスト
Travis CIで実現するPHPアプリの自動テスト
 
Shimokita.Unity Detonatorで爆発
Shimokita.Unity Detonatorで爆発Shimokita.Unity Detonatorで爆発
Shimokita.Unity Detonatorで爆発
 
Shimokita.Unity RigidbodyとColliderで衝突
Shimokita.Unity RigidbodyとColliderで衝突Shimokita.Unity RigidbodyとColliderで衝突
Shimokita.Unity RigidbodyとColliderで衝突
 
Webプログラマの為のUnity入門
Webプログラマの為のUnity入門Webプログラマの為のUnity入門
Webプログラマの為のUnity入門
 
ゴールデンウィークに最適な学習コンテンツ
ゴールデンウィークに最適な学習コンテンツゴールデンウィークに最適な学習コンテンツ
ゴールデンウィークに最適な学習コンテンツ
 
Travis CIですぐに始める継続的インテグレーション
Travis CIですぐに始める継続的インテグレーションTravis CIですぐに始める継続的インテグレーション
Travis CIですぐに始める継続的インテグレーション
 
ブログやサイトのJekyllへの移行
ブログやサイトのJekyllへの移行ブログやサイトのJekyllへの移行
ブログやサイトのJekyllへの移行
 
PHPとTravis CIでブラウザテスト
PHPとTravis CIでブラウザテストPHPとTravis CIでブラウザテスト
PHPとTravis CIでブラウザテスト
 
Shimokita.Unity パリの街をユニティちゃんが駆ける
Shimokita.Unity パリの街をユニティちゃんが駆けるShimokita.Unity パリの街をユニティちゃんが駆ける
Shimokita.Unity パリの街をユニティちゃんが駆ける
 
Dev opschef
Dev opschefDev opschef
Dev opschef
 
Paa s and oss
Paa s and ossPaa s and oss
Paa s and oss
 
New relic
New relicNew relic
New relic
 
Engine Yardで作る NetCommons3のクラウド環境
Engine Yardで作る NetCommons3のクラウド環境Engine Yardで作る NetCommons3のクラウド環境
Engine Yardで作る NetCommons3のクラウド環境
 
Engine Yard Cloud
Engine Yard CloudEngine Yard Cloud
Engine Yard Cloud
 
最近のCandyCane - PHP版Redmineでタスク管理を始めよう
最近のCandyCane - PHP版Redmineでタスク管理を始めよう最近のCandyCane - PHP版Redmineでタスク管理を始めよう
最近のCandyCane - PHP版Redmineでタスク管理を始めよう
 
20121225 php
20121225 php20121225 php
20121225 php
 

PHPの教室「foreachを極める」