【PHP入門】型を変換する方法 | キャスト(Cast)について解説

php-cast

こんにちはフロントエンドエンジニアのまさにょんです!

今回は、PHPの型を変換する・キャスト(Cast)の方法について解説していきます。

PHPのCast(型変換)方法

PHPは、JavaScriptやPythonと同じく「動的な型付け言語」なので、値が代入されて初めて型が確定します。

$number = 12;

と代入することで、$numberは int型になります。

ただ、この「$number = 12」を後から文字列として扱いたい場合は、次のようにすることで型変換(Cast)をすることができます。

$stringNum = (string)$number;

上記のように、値の前に「 (変換する型名) 」を記述することで、型を変換(Cast)することができます。

<?php

// 1. 最初から integer を string として Setする。
$strNum = (string)12;
echo gettype($strNum) . "\n"; // string

// 2. 後から integer を string として Castする。
$number = 12;
$stringNum = (string)$number;
echo gettype($stringNum) . "\n"; // string

基本的な型変換(スカラー型: Integer, String, Boolean, Double の4つの型)

PHPの型には、スカラー型と複合型、特殊型の3カテゴリーがあります。

スカラー型は、Integer, String, Boolean, Doubleの4つで、型の変換に関しては、次のような形で実施できます。

<?php
// < PHPのCast(型変換)方法 Ver. スカラー型 >

$number = 12;

$string = '12';

$boolean = true;

$double = 12.34;

// Cast(型変換)していく!

// 1. Int型をString型にCastする!(Int => String)
$numToString = (string)$number;
echo '$numToString = ', "${numToString} の型は、", gettype($numToString) ."です。\n";

// 2. Int型からBoolean型にCastする!(Int => Boolean)
$numToBool = (bool)$number;
echo '$numToBool = ', "${numToBool} の型は、", gettype($numToBool) . "です。\n";

echo '--------------------------------------------------------------------------------------------' . "\n";

// 3. String型をInt型にCastする!(String => Int)
$stringToNum = (int)$string;
echo '$stringToNum = ', "${stringToNum} の型は、", gettype($stringToNum) ."です。\n";

// 4. String型をBoolean型にCastする!(String => Boolean)
$stringToBool = (bool)$string;
echo '$stringToBool = ', "${stringToBool} の型は、", gettype($stringToBool) . "です。\n";

echo '--------------------------------------------------------------------------------------------' . "\n";

// 5. Boolean型からInt型にCastする!(Boolean => Int)
$boolToNum = (int)$boolean;
echo '$boolToNum = ', "${boolToNum} の型は、", gettype($boolToNum) ."です。\n";

// 6. Boolean型からString型にCastする!(Boolean => String)
$boolToString = (string)$boolean;
echo '$boolToString = ', "${boolToString} の型は、", gettype($boolToString) ."です。\n";

echo '--------------------------------------------------------------------------------------------' . "\n";

// 7. Int型をDouble型にCastする!(Int => Double)
$numToDouble = (float)$number;
echo '$numToDouble = ', "${numToDouble} の型は、", gettype($numToDouble) ."です。\n";

// 8. Double型をInt型にCastする!(Double => Int)
$doubleToNum = (int)$double;
echo '$doubleToNum = ', "${doubleToNum} の型は、", gettype($doubleToNum) ."です。\n";

コマンドラインでの実行結果は、次のとおりです。

コマンドライン・実行結果
$numToString = 12 の型は、stringです。
$numToBool = 1 の型は、booleanです。
--------------------------------------------------------------------------------------------
$stringToNum = 12 の型は、integerです。
$stringToBool = 1 の型は、booleanです。
--------------------------------------------------------------------------------------------
$boolToNum = 1 の型は、integerです。
$boolToString = 1 の型は、stringです。
--------------------------------------------------------------------------------------------
$numToDouble = 12 の型は、doubleです。
$doubleToNum = 12 の型は、integerです。

配列とObjectの型変換(複合型)

配列やObjectは、PHPでは複合型と呼ばれるカテゴリーに入ります。

型の変換に関しては、次のような形で実施できます。

<?php

// [ 配列 ]
$array = [ 'ロボ玉試作1号機', 'ロボ玉試作2号機', 'ロボ玉試作3号機' ];

// [ 連想配列 ]
$associative_array = [
    'name' => 'ロボ玉',
    'from' => 'グンマー帝国',
    'like' => 'ひま種',
];

// [ Object ]
class Robotama {
    public $name = 'ロボ玉';
    public $robotama_flag = true;
    public function hello() {
        echo 'ロボ玉なのだ!';
    }
}

$robotamaInstance = new Robotama;

$arrayToObject = (object)$array;
echo json_encode($arrayToObject, JSON_UNESCAPED_UNICODE), " の型は、", gettype($arrayToObject) . "です。\n";
echo '--------------------------------------------------------------------------------------------' . "\n";

$arrayToObject2 = (object)$associative_array;
echo json_encode($arrayToObject2, JSON_UNESCAPED_UNICODE), " の型は、", gettype($arrayToObject2) . "です。\n";
echo '--------------------------------------------------------------------------------------------' . "\n";

$objectToArray = (array)$robotamaInstance;
echo json_encode($objectToArray, JSON_UNESCAPED_UNICODE), " の型は、", gettype($objectToArray) . "です。\n";
echo '--------------------------------------------------------------------------------------------' . "\n";

コマンドラインでの実行結果は、次のとおりです。

コマンドライン・実行結果
{"0":"ロボ玉試作1号機","1":"ロボ玉試作2号機","2":"ロボ玉試作3号機"} の型は、objectです。
--------------------------------------------------------------------------------------------
{"name":"ロボ玉","from":"グンマー帝国","like":"ひま種"} の型は、objectです。
--------------------------------------------------------------------------------------------
{"name":"ロボ玉","robotama_flag":true} の型は、arrayです。
--------------------------------------------------------------------------------------------

Pointは、2つあります。

  1. Array から Object に変換すると、「key: value」を「 index or 連想配列のkey 」で作成してくれる!
  2. Object から Array に変換すると、連想配列になっている!

配列やObjectの型変換は、実施することも多いと思いますのでポイントを押さえて活用してみてください。

Twitterやってます!Follow Me!

神聖グンマー帝国の逆襲🔥

神聖グンマー帝国の科学は、世界一ぃぃぃぃぃぃ!!!!!

PHP / Laravel書籍

参考・引用

  1. 【PHP/キャスト】型指定を意識する
  2. PHP の オブジェクト型(object) について
  3. 型の相互変換

最近の投稿