为什么PHP类型转换与其他函数不同?

时间:2015-12-29 13:06:01

标签: php casting

PHP中的函数构造如此$datestartend = mysql_query("SELECT * FROM booking"); $range = []; while ($result = mysql_fetch_array($datestartend)){ $begin = new DateTime($result['tdate']); $end = new DateTime($result['ldate']); $interval = new DateInterval('P1D'); // 1 Day $dateRange = new DatePeriod($begin, $interval, $end); foreach ($dateRange as $date) { $range[] = $date->format('d-m-Y'); } } echo json_encode($range); ,变量foo($bar)作为参数。如果要将$bar的值转换为布尔值或字符串,则需要执行以下操作:

$bar

考虑到其他函数的语法,我发现它有点奇怪。与许多其他语言相比,为什么PHP中的Type Casting以这种方式执行:

(string)$bar;
例如,

。我正在寻求更好地理解语言的句法设计。

1 个答案:

答案 0 :(得分:1)

generateGameTree g p = | identifyWinner g p == Nothing = Node (g,p) [ ((fst x),generateGameTree (snd x) (nextPlayer p)) | x <- (findPossibleMoves p g) ] | otherwise = "DO NOTHING" 是内部的实际数据类型。所以考虑一下这个

(string)

所有$bar = 0; //int $foo = '0'; //string 转换都尝试从值中生成一个字符串。换句话说,它只是将数字转换为字符对应物。它本身不适用于构造,如string

array

现在,按照你的问题,对象可以有一个神奇的方法__toString()

$bar = [0];
echo (string)$bar; // E_NOTICE: array to string conversion, outputs 'Array'

当我们尝试将class Foo { protected $bar = 'Hi'; public function __toString() { return $this->bar; } } $x = new Foo(); echo (string)$x; // outputs 'Hi' 对象转换为字符串时,它会调用魔术方法