Submit Search
Upload
知ってるようで意外と知らないPHPの便利関数
•
Download as PPTX, PDF
•
39 likes
•
9,745 views
Wataru Terada
Follow
知ってるようで意外と知らないPHPの便利関数
Read less
Read more
Technology
Report
Share
Report
Share
1 of 57
Download now
Recommended
PHP基本的関数QUIZ
PHP基本的関数QUIZ
Wataru Terada
40分濃縮 PHP classの教室
40分濃縮 PHP classの教室
Yusuke Ando
PHP の GC の話
PHP の GC の話
y-uti
HHVM Hack
HHVM Hack
Masaaki Yonebayashi
PHP7を魔改造した話
PHP7を魔改造した話
Moriyoshi Koizumi
よいことも悪いこともぜんぶPHPが教えてくれた
よいことも悪いこともぜんぶPHPが教えてくれた
Moriyoshi Koizumi
PSR-1 と PSR-2 を5分でざっくり理解する
PSR-1 と PSR-2 を5分でざっくり理解する
Wataru Terada
PHP5.5新機能「ジェネレータ」初心者入門
PHP5.5新機能「ジェネレータ」初心者入門
kwatch
Recommended
PHP基本的関数QUIZ
PHP基本的関数QUIZ
Wataru Terada
40分濃縮 PHP classの教室
40分濃縮 PHP classの教室
Yusuke Ando
PHP の GC の話
PHP の GC の話
y-uti
HHVM Hack
HHVM Hack
Masaaki Yonebayashi
PHP7を魔改造した話
PHP7を魔改造した話
Moriyoshi Koizumi
よいことも悪いこともぜんぶPHPが教えてくれた
よいことも悪いこともぜんぶPHPが教えてくれた
Moriyoshi Koizumi
PSR-1 と PSR-2 を5分でざっくり理解する
PSR-1 と PSR-2 を5分でざっくり理解する
Wataru Terada
PHP5.5新機能「ジェネレータ」初心者入門
PHP5.5新機能「ジェネレータ」初心者入門
kwatch
Hack/HHVM 入門
Hack/HHVM 入門
y-uti
PHP classの教室
PHP classの教室
Yusuke Ando
SlowQueryとの戦い
SlowQueryとの戦い
Ken Gotoh
最近の PHP の話
最近の PHP の話
y-uti
仕事の手離れを良くする手段としての、静的検査のあるテンプレートエンジン (YATT::Lite talk at 2014 テンプレートエンジンNight)
仕事の手離れを良くする手段としての、静的検査のあるテンプレートエンジン (YATT::Lite talk at 2014 テンプレートエンジンNight)
Hiroaki KOBAYASHI
Perl Hobby Programming - Games::BeLike::EightBIT ターミナルで8ビット風ゲームをつくろう
Perl Hobby Programming - Games::BeLike::EightBIT ターミナルで8ビット風ゲームをつくろう
keroyonn
本当は怖いPHP
本当は怖いPHP
Takuya Sato
Modern PHP Programming @ PFI Seminar
Modern PHP Programming @ PFI Seminar
Sotaro Karasawa
phpspecで学ぶLondon School TDD
phpspecで学ぶLondon School TDD
Akio Ishida
Prophecyを使ったユニットテスト
Prophecyを使ったユニットテスト
Akio Ishida
Perl logging
Perl logging
keroyonn
PHPの今とこれから2021
PHPの今とこれから2021
Rui Hirokawa
PHPの今とこれから2014
PHPの今とこれから2014
Rui Hirokawa
Gen-Template-for-Perl
Gen-Template-for-Perl
nasneg
最新PHP事情 (2000年7月22日,PHPカンファレンス)
最新PHP事情 (2000年7月22日,PHPカンファレンス)
Rui Hirokawa
PHPBLT#6 PHPの未来に入るかもしれない機能の紹介
PHPBLT#6 PHPの未来に入るかもしれない機能の紹介
sters
詳説ぺちぺち
詳説ぺちぺち
do_aki
お前は PHP の歴史的な理由の数を覚えているのか
お前は PHP の歴史的な理由の数を覚えているのか
Kousuke Ebihara
PHP, Now and Then 2011
PHP, Now and Then 2011
Rui Hirokawa
【SQLインジェクション対策】徳丸先生に怒られない、動的SQLの安全な組み立て方
【SQLインジェクション対策】徳丸先生に怒られない、動的SQLの安全な組み立て方
kwatch
『例えば、PHPを避ける』以降PHPはどれだけ安全になったか
『例えば、PHPを避ける』以降PHPはどれだけ安全になったか
Hiroshi Tokumaru
営業・運用を支える "気付ける" 管理画面
営業・運用を支える "気付ける" 管理画面
Masao Maeda
More Related Content
What's hot
Hack/HHVM 入門
Hack/HHVM 入門
y-uti
PHP classの教室
PHP classの教室
Yusuke Ando
SlowQueryとの戦い
SlowQueryとの戦い
Ken Gotoh
最近の PHP の話
最近の PHP の話
y-uti
仕事の手離れを良くする手段としての、静的検査のあるテンプレートエンジン (YATT::Lite talk at 2014 テンプレートエンジンNight)
仕事の手離れを良くする手段としての、静的検査のあるテンプレートエンジン (YATT::Lite talk at 2014 テンプレートエンジンNight)
Hiroaki KOBAYASHI
Perl Hobby Programming - Games::BeLike::EightBIT ターミナルで8ビット風ゲームをつくろう
Perl Hobby Programming - Games::BeLike::EightBIT ターミナルで8ビット風ゲームをつくろう
keroyonn
本当は怖いPHP
本当は怖いPHP
Takuya Sato
Modern PHP Programming @ PFI Seminar
Modern PHP Programming @ PFI Seminar
Sotaro Karasawa
phpspecで学ぶLondon School TDD
phpspecで学ぶLondon School TDD
Akio Ishida
Prophecyを使ったユニットテスト
Prophecyを使ったユニットテスト
Akio Ishida
Perl logging
Perl logging
keroyonn
PHPの今とこれから2021
PHPの今とこれから2021
Rui Hirokawa
PHPの今とこれから2014
PHPの今とこれから2014
Rui Hirokawa
Gen-Template-for-Perl
Gen-Template-for-Perl
nasneg
最新PHP事情 (2000年7月22日,PHPカンファレンス)
最新PHP事情 (2000年7月22日,PHPカンファレンス)
Rui Hirokawa
PHPBLT#6 PHPの未来に入るかもしれない機能の紹介
PHPBLT#6 PHPの未来に入るかもしれない機能の紹介
sters
詳説ぺちぺち
詳説ぺちぺち
do_aki
お前は PHP の歴史的な理由の数を覚えているのか
お前は PHP の歴史的な理由の数を覚えているのか
Kousuke Ebihara
PHP, Now and Then 2011
PHP, Now and Then 2011
Rui Hirokawa
【SQLインジェクション対策】徳丸先生に怒られない、動的SQLの安全な組み立て方
【SQLインジェクション対策】徳丸先生に怒られない、動的SQLの安全な組み立て方
kwatch
What's hot
(20)
Hack/HHVM 入門
Hack/HHVM 入門
PHP classの教室
PHP classの教室
SlowQueryとの戦い
SlowQueryとの戦い
最近の PHP の話
最近の PHP の話
仕事の手離れを良くする手段としての、静的検査のあるテンプレートエンジン (YATT::Lite talk at 2014 テンプレートエンジンNight)
仕事の手離れを良くする手段としての、静的検査のあるテンプレートエンジン (YATT::Lite talk at 2014 テンプレートエンジンNight)
Perl Hobby Programming - Games::BeLike::EightBIT ターミナルで8ビット風ゲームをつくろう
Perl Hobby Programming - Games::BeLike::EightBIT ターミナルで8ビット風ゲームをつくろう
本当は怖いPHP
本当は怖いPHP
Modern PHP Programming @ PFI Seminar
Modern PHP Programming @ PFI Seminar
phpspecで学ぶLondon School TDD
phpspecで学ぶLondon School TDD
Prophecyを使ったユニットテスト
Prophecyを使ったユニットテスト
Perl logging
Perl logging
PHPの今とこれから2021
PHPの今とこれから2021
PHPの今とこれから2014
PHPの今とこれから2014
Gen-Template-for-Perl
Gen-Template-for-Perl
最新PHP事情 (2000年7月22日,PHPカンファレンス)
最新PHP事情 (2000年7月22日,PHPカンファレンス)
PHPBLT#6 PHPの未来に入るかもしれない機能の紹介
PHPBLT#6 PHPの未来に入るかもしれない機能の紹介
詳説ぺちぺち
詳説ぺちぺち
お前は PHP の歴史的な理由の数を覚えているのか
お前は PHP の歴史的な理由の数を覚えているのか
PHP, Now and Then 2011
PHP, Now and Then 2011
【SQLインジェクション対策】徳丸先生に怒られない、動的SQLの安全な組み立て方
【SQLインジェクション対策】徳丸先生に怒られない、動的SQLの安全な組み立て方
Viewers also liked
『例えば、PHPを避ける』以降PHPはどれだけ安全になったか
『例えば、PHPを避ける』以降PHPはどれだけ安全になったか
Hiroshi Tokumaru
営業・運用を支える "気付ける" 管理画面
営業・運用を支える "気付ける" 管理画面
Masao Maeda
なぜ、PHPのmbstring.func_overloadをdeprecatedにするのに5年かかったのか? - 慢心、環境の違い
なぜ、PHPのmbstring.func_overloadをdeprecatedにするのに5年かかったのか? - 慢心、環境の違い
sasezaki
みんなそろそろ707やめようぜ (;´Д`)
みんなそろそろ707やめようぜ (;´Д`)
Yasutaka Hamada
PHP、おまえだったのか。 いつもHTTPメッセージを 運んでくれたのは。
PHP、おまえだったのか。 いつもHTTPメッセージを 運んでくれたのは。
sasezaki
脆弱性もバグ、だからテストしよう PHPカンファンレス2015
脆弱性もバグ、だからテストしよう PHPカンファンレス2015
ichikaway
いまどきのPHP開発現場 -2015年秋-
いまどきのPHP開発現場 -2015年秋-
Masashi Shinbara
PHPの今とこれから2015
PHPの今とこれから2015
Rui Hirokawa
PHPとシグナル、その裏側
PHPとシグナル、その裏側
do_aki
Viewers also liked
(9)
『例えば、PHPを避ける』以降PHPはどれだけ安全になったか
『例えば、PHPを避ける』以降PHPはどれだけ安全になったか
営業・運用を支える "気付ける" 管理画面
営業・運用を支える "気付ける" 管理画面
なぜ、PHPのmbstring.func_overloadをdeprecatedにするのに5年かかったのか? - 慢心、環境の違い
なぜ、PHPのmbstring.func_overloadをdeprecatedにするのに5年かかったのか? - 慢心、環境の違い
みんなそろそろ707やめようぜ (;´Д`)
みんなそろそろ707やめようぜ (;´Д`)
PHP、おまえだったのか。 いつもHTTPメッセージを 運んでくれたのは。
PHP、おまえだったのか。 いつもHTTPメッセージを 運んでくれたのは。
脆弱性もバグ、だからテストしよう PHPカンファンレス2015
脆弱性もバグ、だからテストしよう PHPカンファンレス2015
いまどきのPHP開発現場 -2015年秋-
いまどきのPHP開発現場 -2015年秋-
PHPの今とこれから2015
PHPの今とこれから2015
PHPとシグナル、その裏側
PHPとシグナル、その裏側
Similar to 知ってるようで意外と知らないPHPの便利関数
Cakephp api
Cakephp api
Eiji Yokota
Local php-100828 2
Local php-100828 2
Akio Ishida
知って得する標準関数の使い方
知って得する標準関数の使い方
Soudai Sone
3時間濃縮CakePHP2.1 in PHPカンファレンス北海道2012
3時間濃縮CakePHP2.1 in PHPカンファレンス北海道2012
Yusuke Ando
アルゴリズム+データ構造勉強会(8)
アルゴリズム+データ構造勉強会(8)
noldor
GMO TECHNOLOGY BOOT CAMP2015(PHP編)
GMO TECHNOLOGY BOOT CAMP2015(PHP編)
Arata Fujimura
「スピード」と「品質」を実現するPHP開発チームの取り組み~AngularJS+FuelPHP+AspectMock~
「スピード」と「品質」を実現するPHP開発チームの取り組み~AngularJS+FuelPHP+AspectMock~
leverages_event
JavaScriptクイックスタート
JavaScriptクイックスタート
Shumpei Shiraishi
Mojoliciousをウェブ制作現場で使ってみてる
Mojoliciousをウェブ制作現場で使ってみてる
jamadam
URLで遊ぼう
URLで遊ぼう
Hiraku Nakano
Php apocalypse
Php apocalypse
Kiichi Kajiura
&& || and or まぜるな危険
&& || and or まぜるな危険
Hisateru Tanaka
pecl-AOPの紹介
pecl-AOPの紹介
Hiraku Nakano
Livesense tech night immutable-js at a glance
Livesense tech night immutable-js at a glance
Yuta Shimakawa
速くなければスマフォじゃない - インターンバージョン-
速くなければスマフォじゃない - インターンバージョン-
Kazunari Hara
テストではまったお話 Test::More
テストではまったお話 Test::More
Tetsuya Tatsumi
Swiftおさらい
Swiftおさらい
Hidenori Takeshita
Perl 非同期プログラミング
Perl 非同期プログラミング
lestrrat
Perl 6 Object-Oliented Programming
Perl 6 Object-Oliented Programming
risou
PHPのタイプヒンティング
PHPのタイプヒンティング
Hidetaka Okamoto
Similar to 知ってるようで意外と知らないPHPの便利関数
(20)
Cakephp api
Cakephp api
Local php-100828 2
Local php-100828 2
知って得する標準関数の使い方
知って得する標準関数の使い方
3時間濃縮CakePHP2.1 in PHPカンファレンス北海道2012
3時間濃縮CakePHP2.1 in PHPカンファレンス北海道2012
アルゴリズム+データ構造勉強会(8)
アルゴリズム+データ構造勉強会(8)
GMO TECHNOLOGY BOOT CAMP2015(PHP編)
GMO TECHNOLOGY BOOT CAMP2015(PHP編)
「スピード」と「品質」を実現するPHP開発チームの取り組み~AngularJS+FuelPHP+AspectMock~
「スピード」と「品質」を実現するPHP開発チームの取り組み~AngularJS+FuelPHP+AspectMock~
JavaScriptクイックスタート
JavaScriptクイックスタート
Mojoliciousをウェブ制作現場で使ってみてる
Mojoliciousをウェブ制作現場で使ってみてる
URLで遊ぼう
URLで遊ぼう
Php apocalypse
Php apocalypse
&& || and or まぜるな危険
&& || and or まぜるな危険
pecl-AOPの紹介
pecl-AOPの紹介
Livesense tech night immutable-js at a glance
Livesense tech night immutable-js at a glance
速くなければスマフォじゃない - インターンバージョン-
速くなければスマフォじゃない - インターンバージョン-
テストではまったお話 Test::More
テストではまったお話 Test::More
Swiftおさらい
Swiftおさらい
Perl 非同期プログラミング
Perl 非同期プログラミング
Perl 6 Object-Oliented Programming
Perl 6 Object-Oliented Programming
PHPのタイプヒンティング
PHPのタイプヒンティング
More from Wataru Terada
Chrome拡張で改善 表紙
Chrome拡張で改善 表紙
Wataru Terada
PHP選んで良かったこと
PHP選んで良かったこと
Wataru Terada
僕がエンジニアとしていつも考えていること
僕がエンジニアとしていつも考えていること
Wataru Terada
技術ドキュメントで難しい英文に出会ったら
技術ドキュメントで難しい英文に出会ったら
Wataru Terada
CakePHP を使ってよかったこと
CakePHP を使ってよかったこと
Wataru Terada
自動テストで開発効率を上げるには
自動テストで開発効率を上げるには
Wataru Terada
本当のオブジェクト指向は可読性を上げる
本当のオブジェクト指向は可読性を上げる
Wataru Terada
初めてのTravisCIでハマったこと
初めてのTravisCIでハマったこと
Wataru Terada
単体テストで工数を短縮する
単体テストで工数を短縮する
Wataru Terada
デグレを防ぐテストの書き方
デグレを防ぐテストの書き方
Wataru Terada
CakePHP の Cookbook に翻訳貢献する方法と vagrant
CakePHP の Cookbook に翻訳貢献する方法と vagrant
Wataru Terada
More from Wataru Terada
(11)
Chrome拡張で改善 表紙
Chrome拡張で改善 表紙
PHP選んで良かったこと
PHP選んで良かったこと
僕がエンジニアとしていつも考えていること
僕がエンジニアとしていつも考えていること
技術ドキュメントで難しい英文に出会ったら
技術ドキュメントで難しい英文に出会ったら
CakePHP を使ってよかったこと
CakePHP を使ってよかったこと
自動テストで開発効率を上げるには
自動テストで開発効率を上げるには
本当のオブジェクト指向は可読性を上げる
本当のオブジェクト指向は可読性を上げる
初めてのTravisCIでハマったこと
初めてのTravisCIでハマったこと
単体テストで工数を短縮する
単体テストで工数を短縮する
デグレを防ぐテストの書き方
デグレを防ぐテストの書き方
CakePHP の Cookbook に翻訳貢献する方法と vagrant
CakePHP の Cookbook に翻訳貢献する方法と vagrant
Recently uploaded
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Yuma Ohgami
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
Toru Tamaki
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
Ryo Sasaki
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
Toru Tamaki
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
taisei2219
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
Hiroki Ichikura
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
Toru Tamaki
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
danielhu54
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
sugiuralab
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
iPride Co., Ltd.
Recently uploaded
(10)
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
知ってるようで意外と知らないPHPの便利関数
1.
2014-10-27 GMOリサーチ寺田渉 Facebook:
寺田渉Twitter: @wa_terada
2.
ボードゲーム翻訳 CakePHP Cookbook翻訳
TED 字幕翻訳 開発(PHP/JavaScript/Java/Perl)
3.
公式ホームページがある。 判らなかったら、まずはここを調べよう。 http://jp1.php.net/manual/ja/
4.
5.
今日は、PHPの仕様で 初心者がハマりやすいポイントや 知ってると便利な関数を紹介します。
6.
文法編
7.
==
8.
<?php $input =
"1abc"; if ($input == 1) { echo "NG!!!!"; } これはNG!!!! が出力される。 なぜ?
9.
<?php $input =
"1abc"; if ($input == 1) { echo "NG!!!!"; } キャストされるから。 さけるには=== を使う。 左右のどちらかが文字列でない場合、 == は危険。
10.
empty()
11.
empty(変数) 変数が null
, false , 0 , 0.0 , '' , [] , 未定義 ならtrue になる。 他にもあるが何?
12.
$var = '0';
empty($var); //←これはtrue 文字列の'0' が空だと 判定されることを忘れないこと。
13.
配列の+
14.
配列の+ とarray_merge は何が違う?
<?php $a1 = [ 'a' => 1, 'b' => 2, 3 ]; $a2 = [ 'b' => 4, 'c' => 5, 6 ]; var_export($a1 + $a2); var_export(array_merge($a1, $a2)); この結果は違う?
15.
【+の場合】 array (
'a' => 1, 'b' => 2, //先勝ち 0 => 3, 'c' => 5, //先勝ちで6無し ) → key/index どちら でも常に先勝ち 【array_merge の場合】 array ( 'a' => 1, 'b' => 4, //後勝ち 0 => 3, 'c' => 5, 1 => 6, //勝手に連番 ) → key なら後勝ち index なら連番 $a1 = [ 'a' => 1, 'b' => 2, 3 ]; $a2 = [ 'b' => 4, 'c' => 5, 6 ];
16.
では、これはどうなるでしょう? <?php $a1
= [1,2,3]; $a2 = [4,5,6]; var_export($a1 + $a2); var_export(array_merge($a1, $a2));
17.
【+の場合】 array (
0 => 1, 1 => 2, 2 => 3, ) 【array_merge の場合】 array( 0 => 1, 1 => 2, 2 => 3, 3 => 4, 4 => 5, 5 => 6, $a1 = [1,2,3]; $a2 = [4,5,6]; ※おそらく混乱するので ) 配列の+ は使わない方が良い。
18.
関数編
19.
文字列分割 いろいろ
20.
<?php $str =
"aaa<br/>bbb<br/>ccc"; $res = 【なんでしょう】;
21.
<?php $str =
"aaa<br/>bbb<br/>ccc"; $res = explode("<br/>", $str); var_export($res); array ( 0 => 'aaa', 1 => 'bbb', 2 => 'ccc', )
22.
<?php $str =
"aaa<br/>bbb<br>ccc"; $res = 【なんでしょう】;
23.
<?php $str =
"aaa<br/>bbb<br>ccc"; $res = preg_split('/<br¥/?>/', $str); var_export($res); array ( 0 => 'aaa', 1 => 'bbb', 2 => 'ccc', )
24.
<?php $str =
"aaa<br/>bbb<br>ccc"; $res = 【なんでしょう】;
25.
<?php $str =
"aaa<br/>bbb<br>ccc"; $res = preg_split('/(<br¥/?>)/', $str, null, PREG_SPLIT_DELIM_CAPTURE); var_export($res); array ( 0 => 'aaa', 1 => '<br/>', 2 => 'bbb', 3 => '<br>', 4 => 'ccc', )
26.
<?php $str =
"aaa<br/>bbb<br>ccc"; $res = 【なんでしょう】;
27.
<?php $str =
"aaa<br/>bbb<br>ccc"; $res = str_split($str, 5); var_export($res); array ( 0 => 'aaa<b', 1 => 'r/>bb', 2 => 'b<br>', 3 => 'ccc', )
28.
<?php $str =
'aaa,"b,b,b","c""c""c"'; $res = 【なんでしょう】;
29.
<?php $str =
'aaa,"b,b,b","c""c""c"'; $res = str_getcsv($str, ',', '"'); var_export($res); array ( 0 => 'aaa', 1 => 'b,b,b', 2 => 'c"c"c', )
30.
文字列キャプチャ いろいろ
31.
2014-10-27 19:00,ERROR:あいうえお ここから、
年月日、 時分、 ERRORの文字列、 メッセージ を抜き出したい!
32.
<?php $str =
"2014-10-27 19:00,ERROR:あいうえお"; $res = sscanf($str, '%10s %5s,%5s:%s'); var_export($res); だが、"ERROR" 部分が可変長だと発覚!! どうする? array ( 0 => '2014-10-27', 1 => '19:00', 2 => 'ERROR', 3 => 'あいうえお', )
33.
<?php $str =
"2014-10-27 19:00,ERROR:あいうえお"; preg_match('/^(.+?) (.+?),(w+):(.*)$/', $str, $res); var_export($res); array ( 0 => '2014-10-27', 1 => '19:00', 2 => 'ERROR', 3 => 'あいうえお', ) これ、結果を連想配列で取れる?
34.
<?php $str =
"2014-10-27 19:00,ERROR:あいうえお"; preg_match('/^(?<ymd>.+?) (?<hm>.+?),' . '(?<type>w+):(?<msg>.*)$/', $str, $res); var_export($res); array ( 0 => '2014-10-27 19:00,ERROR:あいうえお', 'ymd' => '2014-10-27', 1 => '2014-10-27', 'hm' => '19:00', 2 => '19:00', 'type' => 'ERROR', 3 => 'ERROR', 'msg' => 'あいうえお', 4 => 'あいうえお', )
35.
配列関数 いろいろ
36.
<?php $ary =
[1,2,3,4,5]; $res = 【なんでしょう】;
37.
<?php $ary =
[1,2,3,4,5]; $res = array_chunk($ary, 2); //$res: [[1,2],[3,4],[5]]
38.
array_map 指定した配列の要素に コールバック関数を適用する
http://jp1.php.net/manual/ja/function.array-map.php array_walk 配列の全ての要素に ユーザー定義の関数を適用する http://jp1.php.net/manual/ja/function.array-walk.php 答えはドキュメントの中! ヒント:引数と戻り値
39.
array_map array array_map
( callable $callback , array $array1 [, array $... bool array_walk ( array &$array , callable $callback [, mixed $userdata array_walk そう! array_map は変更後の配列を作るためのもの array_walk は自身を書き換えるためのもの
40.
よく使う 便利な配列関数 を2つ紹介
41.
0,5,10,...という具合に 10000まで5つ刻みの数列がほしい!
42.
0,5,10,...という具合に 10000まで5つ刻みの数列がほしい! range(0,
10000, 5)
43.
$id = $array[0];
$name = $array[1]; これを下記のように書ける? ($id, $name) = $array;
44.
$id = $array[0];
$name = $array[1]; これを下記のように書けます! list($id, $name) = $ary;
45.
SPL編 Standard PHP
Library (SPL) (標準で入っているライブラリ) http://jp1.php.net/manual/ja/book.spl.php
46.
LogicException throwされたらバグだという場合の例外。 つまり、これをキャッチするプログラムは不要だし、
運用中には絶対throwされないようにすべき。 バグを発見しやすくするために仕込む例外はコレ。 if ($data == null) { throw new LogicException( "dataがnullの場合はこの関数使えません"); }
47.
イテレータ 普通なら、ループの中に色々な制御を 入れていくことになるが、
イテレータではループの外で 条件などを定義可能。
48.
SplFileObject ファイルの1行ずつをイテレータとして扱える。 (メモリから消えると勝手にfclose
するのも地味に便利) <?php $file = new SplFileObject($path); $file->setFlags(SplFileObject::READ_CSV); foreach ($file as $line) { echo $line[0]; }
49.
AppendIterator イテレータ複数を1つのイテレータとして扱える。 サイズが大きくてarray_merge
では心配なとき良い。 $ite = new AppendIterator(); $ite->append(new ArrayIterator([1,2,3])); $ite->append(new ArrayIterator([5,6,7])); foreach ($ite as $a) { echo $a; } //result: 123567
50.
LimitIterator イテレータのループ範囲を限定する。上位100件とか。 $ite
= new ArrayIterator([1,2,3,4,5,6,7]); $ite = new LimitIterator($ite, 2, 4); foreach ($ite as $a) { echo $a; } //3456
51.
CallbackFilterIterator イテレータにフィルタを適用する。 $ite
= new ArrayIterator([1,2,3,4,5,6,7]); $ite = new CallbackFilterIterator($ite, function($current, $key, $iterator) { return $current % 2 == 0; } ); foreach ($ite as $a) { echo $a; } //246
52.
PHPの公式ホームページは かなり充実しています。宝の山です。 特に文法、配列、文字列、SPL
まわり は一度ざっと読んでおくと良いでしょう。 判らなかったら公式ホームページ を見てみましょう!
53.
GMOリサーチ (10月21日上場しました!) 現在、一緒に働ける仲間(社員)を
募集しています!!
54.
- GitHub /
Git (git-flow) - PHPStorm - CakePHP - ユニットテスト/ Behat - 継続的インテグレーション - 将来は英語話せるようにサポート
55.
- 無料のカフェ -
お昼寝スペース(利用推奨) - 託児所 - マッサージルーム
56.
ぜひFacebook 等で 寺田渉まで
ご連絡ください!!
57.
ご清聴ありがとうございました!
Download now