0
0

More than 1 year has passed since last update.

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

Last updated at Posted at 2023-07-31

前回はこちら

本記事について

対象読者

  • これから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でも可

定数について

ちょい手間な書き方

define('PRICE', 1000);

echo PRICE;
// -> 1000

配列について

配列と連想配列があるが、根本的にはすべて連想配列(JavaでいうMapみたいな感じ)

$array1 = [1, 2, 3];

print_r($array1);
// ->
// Array
// (
//     [0] => 1
//     [1] => 2
//     [2] => 3
// )
// インデックスをキーとした連想配列が作成される
$array2 = [
    'a' => 'apple',
    'b' => 'banana',
    'c' => 'coconut'
];

print_r($array2);
// ->
// Array
// (
//     [a] => apple
//     [b] => banana
//     [c] => coconut
// )

演算子について

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

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

// 代入
$a .= $b
// -> 1020
// 文字列の加算
$a = '10';
$b = 20;

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

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

$a <> $b
// -> true
// $a != $bと同義

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

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

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

条件分岐、繰り返し、等

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

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

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

最後に

一旦、ここまで

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

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

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

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

以上

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0