More Related Content
PPTX
PDF
PDF
PDF
PPTX
PDF
PPTX
PSR-1 と PSR-2 を5分でざっくり理解する PDF
What's hot
PDF
PDF
PDF
PDF
PDF
仕事の手離れを良くする手段としての、静的検査のあるテンプレートエンジン (YATT::Lite talk at 2014 テンプレートエンジンNight) PPTX
Perl Hobby Programming - Games::BeLike::EightBIT ターミナルで8ビット風ゲームをつくろう ODP
PDF
Modern PHP Programming @ PFI Seminar PDF
phpspecで学ぶLondon School TDD PDF
PPTX
PDF
PDF
PPT
PDF
最新PHP事情 (2000年7月22日,PHPカンファレンス) PPTX
PDF
お前は PHP の歴史的な理由の数を覚えているのか PPT
PDF
【SQLインジェクション対策】徳丸先生に怒られない、動的SQLの安全な組み立て方 Viewers also liked
PPTX
『例えば、PHPを避ける』以降PHPはどれだけ安全になったか PDF
PDF
なぜ、PHPのmbstring.func_overloadをdeprecatedにするのに5年かかったのか? - 慢心、環境の違い PDF
PDF
PHP、おまえだったのか。 いつもHTTPメッセージを 運んでくれたのは。 PDF
脆弱性もバグ、だからテストしよう PHPカンファンレス2015 PDF
PDF
PPTX
Similar to 知ってるようで意外と知らないPHPの便利関数
PDF
PDF
PDF
PHP初心者セッション2023 〜ChatGPT時代の簡単な始め方〜 KEY
WPerのWPerによるWPerのためのPHP入門 KEY
PDF
PDF
PDF
デザイナー向け 初めてのPhp ~サイト制作に役立つtips~ PDF
Web デザイナーが身に付けておきたい定番スキル ーPHP 初級編ー PPTX
PHPCON_TOKYO_2022_Bigginer.pptx PPTX
PDF
PDF
Phpcon tokyo 20120_bigginer PPTX
PDF
GMO TECHNOLOGY BOOT CAMP2015(PHP編) PDF
KEY
PDF
PDF
PDF
More from Wataru Terada
PPTX
PPTX
PPTX
PPTX
PPTX
PPTX
PPTX
PPTX
PPTX
PPTX
PPTX
CakePHP の Cookbook に翻訳貢献する方法と vagrant 知ってるようで意外と知らないPHPの便利関数
- 1.
- 2.
- 3.
- 5.
- 6.
- 7.
- 8.
<?php
$input ="1abc";
if ($input == 1) { echo "NG!!!!"; }
これはNG!!!! が出力される。
なぜ?
- 9.
<?php
$input ="1abc";
if ($input == 1) { echo "NG!!!!"; }
キャストされるから。
さけるには=== を使う。
左右のどちらかが文字列でない場合、
== は危険。
- 10.
- 11.
- 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.
- 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.
- 21.
<?php
$str ="aaa<br/>bbb<br/>ccc";
$res = explode("<br/>", $str);
var_export($res);
array (
0 => 'aaa',
1 => 'bbb',
2 => 'ccc',
)
- 22.
- 23.
<?php
$str ="aaa<br/>bbb<br>ccc";
$res = preg_split('/<br¥/?>/', $str);
var_export($res);
array (
0 => 'aaa',
1 => 'bbb',
2 => 'ccc',
)
- 24.
- 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.
- 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.
- 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.
- 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.
- 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.
- 41.
- 42.
- 43.
- 44.
- 45.
SPL編
Standard PHPLibrary (SPL)
(標準で入っているライブラリ)
http://jp1.php.net/manual/ja/book.spl.php
- 46.
- 47.
- 48.
- 49.
- 50.
- 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.
- 53.
- 54.
- GitHub /Git (git-flow)
- PHPStorm
- CakePHP
- ユニットテスト/ Behat
- 継続的インテグレーション
- 将来は英語話せるようにサポート
- 55.
- 56.
- 57.