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
ニーリーにおけるプロダクトエンジニア
nealle
0
910
High-Level Programming Languages in AI Era -Human Thought and Mind-
hayat01sh1da
PRO
0
850
MCPを使ってイベントソーシングのAIコーディングを効率化する / Streamlining Event Sourcing AI Coding with MCP
tomohisa
0
160
The Evolution of Enterprise Java with Jakarta EE 11 and Beyond
ivargrimstad
0
200
NEWT Backend Evolution
xpromx
1
120
状態遷移図を書こう / Sequence Chart vs State Diagram
orgachem
PRO
2
190
AI時代の『改訂新版 良いコード/悪いコードで学ぶ設計入門』 / ai-good-code-bad-code
minodriven
23
9.2k
「App Intent」よくわからんけどすごい!
rinngo0302
1
100
The Modern View Layer Rails Deserves: A Vision For 2025 And Beyond @ RailsConf 2025, Philadelphia, PA
marcoroth
2
680
AI Agent 時代のソフトウェア開発を支える AWS Cloud Development Kit (CDK)
konokenj
6
740
なんとなくわかった気になるブロックテーマ入門/contents.nagoya 2025 6.28
chiilog
1
280
GPUを計算資源として使おう!
primenumber
1
210
Featured
See All Featured
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
233
17k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
138
34k
How STYLIGHT went responsive
nonsquared
100
5.6k
Designing Experiences People Love
moore
142
24k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
50
5.5k
The Invisible Side of Design
smashingmag
301
51k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
47
9.6k
Java REST API Framework Comparison - PWX 2021
mraible
31
8.7k
Writing Fast Ruby
sferik
628
62k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
7
750
Git: the NoSQL Database
bkeepers
PRO
430
65k
Keith and Marios Guide to Fast Websites
keithpitt
411
22k
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 で変数を展開する際に便利。