Javaしか知らない10年目プログラマが転職を機にPHPを学び始めた話 #2

2023/07/31に公開

前回はこちら

https://zenn.dev/naoto24kawa/articles/51fde8691c1b72

本記事について

対象読者

  • これからPHPを学ぼうとしている方
  • ある程度プログラミング経験がある方
  • 転職による環境の変化に不安を抱いている方

本記事作成の経緯

アルバイトから数えて10年ほどJavaとSpringbootで受託開発を行っていましたが、
初めての転職を機にPHPとLaravelを使った自社サービス開発の環境へ飛び込んで得た、
知見と感想を共有させてください。

PHP入門

数値リテラルは他言語と同様なので省きます

型変換について

Javaユーザーからすると、stringからintへの変換にクセがあると感じました

文字列から数値

まず、キャストの方法は主に2つ

/* 一般的なキャストを利用する */
echo (int) "10";
// -> 10

/* 変換の関数を利用する */
echo intval("20");
// -> 20

数字以外を含んでいる

文字列に数字以外を含んでいても変換可能

/* 数値が文字列の先頭に含まれる場合 */
echo (int) "10acb";
// -> 10

/* 数値が文字列の先頭に含まれる場合 */
echo intval("20xyz");
// -> 20

/* 数値が文字列の先頭では無い場合 */
echo (int) "abc10";
// -> 0

/* 数値が文字列の先頭では無い場合 */
echo intval("xyz20");
// -> 0

演算時に自動変換

intにもfloatにも変換可能

/* intの場合 */
echo "10" + "20";
// -> 30

/* floatの場合 */
echo "10" + "1.1";
// -> 11.1

以下、できないケースもある(っぽい)

/* これはエラーになる */
echo "10abc" + 20;
// -> PHP Warning:  A non-numeric value encountered

/* これはエラーにならない */
echo intval("10abc") + 20;
// -> 30

変数について

型や宣言、演算子はほぼ同様

// スカラー型のみ紹介
integer : 整数。intでも可。
float   : 浮動小数。double同義らしい。
double  : 浮動小数。float同義らしい。
string  : 文字列。
boolean : 真偽値。boolでも可

Javaユーザーが知らなかった演算子

$a = '10';
$b = 20;

// 代入
$a .= $b
// -> 1020

// 比較
$a == 10
// -> true

$a === 10
// -> false
// 型まで比較する

$a <> $b
// -> true

$a <=> $b
// -> -1
// 宇宙船演算子っていうらしい
// a, bが逆の場合は1, もし,等しい場合は0

// その他
echo $a ?? $b
// -> 10
// Null合体演算子っていうらしい
// 左辺がNullの場合に右辺が代入される

他にも配列操作も演算子でできるのだが省略

条件分岐、繰り返し、等

ほぼ一緒
foreachが書けるってくらい

$array = ['a', 'b', 'c'];

for(array as str) {
  echo str;
  // -> a
  // -> b
  // -> c
}

最後に

一旦、ここまで

細かい違いっていっぱいあるよねって感じ
さらっと書きたいんですがちょこちょこ引っかかるのでストレスかかります。。

本記事でひっかかりポイント回避の参考になると幸いです。

最後に
上記の理解の誤り、実装の誤り等あればご指摘いただけると幸いです

次は「関数」がテーマになると思いますのでお楽しみに

以上

Discussion