ITの隊長のブログ

ITの隊長のブログです。Rubyを使って仕事しています。最近も色々やっているお(^ω^ = ^ω^)

PHPのceil()って関数の返り値はfloatなことに注意

マニュアルを読んでみるとすぐわかることだったのに(´・ω・`)ショボーン


PHP: ceil - Manual

<?php

$initTest = new InitTest();

/**
 * floatとint型を値&型チェック(===)しているので
 * この条件分岐はfalseになる
 */
if ($initTest->getLine() === 1) {
    echo "true".PHP_EOL;
} else {
    echo "false".PHP_EOL;
}
?>

<?php
class InitTest {
    private $line;

    function __construct() {
        // ここの型はfloatになる
        $this->line = ceil(2/2);        
    }

    public function getLine() {
        return $this->line;
    }
}
?>


その場合、int型へキャストしてあげれば良い。

<?php

    function __construct() {
        // ここの型はfloatになるので、int型へキャストする。
        $this->line = (int) ceil(2/2);        
    }


これでおk