Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
かんたん! PHP7の便利な演算子
Search
いはらオジサン
May 29, 2019
Programming
0
150
かんたん! PHP7の便利な演算子
「第138回 PHP勉強会@東京」にて、発表をさせて頂いたLT(ライトニングトーク)資料です。
いはらオジサン
May 29, 2019
Tweet
Share
Other Decks in Programming
See All in Programming
AgentCoreとHuman in the Loop
har1101
5
240
Data-Centric Kaggle
isax1015
2
780
Raku Raku Notion 20260128
hareyakayuruyaka
0
350
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
610
CSC307 Lecture 08
javiergs
PRO
0
670
例外処理とどう使い分ける?Result型を使ったエラー設計 #burikaigi
kajitack
16
6.1k
フロントエンド開発の勘所 -複数事業を経験して見えた判断軸の違い-
heimusu
7
2.8k
20260127_試行錯誤の結晶を1冊に。著者が解説 先輩データサイエンティストからの指南書 / author's_commentary_ds_instructions_guide
nash_efp
1
980
登壇資料を作る時に意識していること #登壇資料_findy
konifar
4
1.6k
CSC307 Lecture 01
javiergs
PRO
0
690
AIエージェントのキホンから学ぶ「エージェンティックコーディング」実践入門
masahiro_nishimi
5
530
IFSによる形状設計/デモシーンの魅力 @ 慶應大学SFC
gam0022
1
310
Featured
See All Featured
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
1.7k
How STYLIGHT went responsive
nonsquared
100
6k
The untapped power of vector embeddings
frankvandijk
1
1.6k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
5.8k
A Tale of Four Properties
chriscoyier
162
24k
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
320
Site-Speed That Sticks
csswizardry
13
1.1k
Leo the Paperboy
mayatellez
4
1.4k
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
380
Dominate Local Search Results - an insider guide to GBP, reviews, and Local SEO
greggifford
PRO
0
78
It's Worth the Effort
3n
188
29k
Transcript
かんたん! PHP7の便利な演算子
自己紹介 • 名前 : いはらオジサン • 職業 : ぷろぐらまー •
PHPer : 約10ヶ月
本日のアジェンダ • 演算子の紹介と使用例 ◦ (PHP7.0)宇宙船演算子(<=>) ◦ (PHP7.0)Null合体演算子(??) • おまけ ◦
(PHP7.4)Null合体代入演算子(??=) • まとめ
宇宙船演算子とは
PHP7.0の新機能
2つの式の 大小関係を評価できる 比較演算子
<=> ↑こんなやつ
どんな動きをするのか
整数の場合 1 <=> 1; 戻り値 : 0 1 <=> 2;
戻り値 : -1 2 <=> 1; 戻り値 : 1
浮動小数点の場合 1.5 <=> 1.5; 戻り値 : 0 1.5 <=> 2.5;
戻り値 : -1 2.5 <=> 1.5; 戻り値 : 1
文字列の場合 "a" <=> "a"; 戻り値 : 0 "a" <=> "b";
戻り値 : -1 "b" <=> "a"; 戻り値 : 1
使用例
usort($a, function($a, $b) { if ($a == $b) return 0;
return ($a < $b) ? -1 : 1; });
宇宙船演算子なら
usort($a, function($a, $b) { return $a <=> $b; });
エルビス演算子を 組み合わせると
usort($a, function($a, $b) { return $a->name <=> $b->name ?: $b->birthday
<=> $a->birthday ?: $a->age <=> $b->age; });
usort($a, function($a, $b) { return 名前の昇順 ?: 誕生日の降順 ?: 年齢の昇順;
});
複雑なソート処理が かんたんにできる
NEXT
Null合体演算子とは
PHP7.0の新機能
未定義変数に 初期値を与える為の 条件演算子
?? ↑こんなやつ
どんな動きをするのか
$a が定義されている場合 $a = 'ある'; $b = $a ?? 'ない';
echo $b; // ある
$a が定義されていない場合 $b = $a ?? 'ない'; echo $b;
// ない
同じ動きをしている $b = isset($a) ? $a : 'ない';
演算子を連結できる $c = $a ?? $b ?? 'ない';
使用例
<input type="text" name="test" value=" <?php if (isset($SESSION['test'])) { echo $SESSION['test'];
} else { echo ""; } ?> ">
Null合体演算子なら
<input type="text" name="test" value=" <?php echo $SESSION['test'] ?? ""; ?>">
とても読みやすい
みんな しあわせ
View で 変数を展開する際に 大活躍できる
おまけ
PHP7.4の新機能 (PHP RFCより)
Null合体代入演算子
Null合体演算子と 代入演算子の 省略系演算子
??= ↑こんなやつ
どんな動きをするのか
さらに短く書ける! $a = 'ある'; $b ??= $a; echo $b;
// ある
Model で 変数を代入する際に 便利かも
まとめ
まとめ • 宇宙船演算子(<=>)は、 複雑なソート処理をかんたんにできる。 • Null合体演算子(??)は、 View で変数を展開する際に便利。 • Null合体代入演算子(??=)は、
Model で変数を展開する際に便利。