【发布时间】:2015-04-21 22:19:54
【问题描述】:
这是一个关于 PHP 内部结构以及它在后台如何工作的问题:
php是如何决定的:
$a = 3;
需要是整数(内部)?
以及如何
$a = "3";
需要是字符串吗?
我曾经听说 PHP 使用强制转换每个变量(转换为不同的类型)来确定其所需的内部数据类型,但是在尝试验证此语句时,我无法在 Internet 上找到任何相关信息。
官方 PHP 文档中有一些奇怪的例子描述了该语言的一些奇怪行为:
来源:http://php.net/manual/en/language.types.type-juggling.php
<?php
$foo = "0"; // $foo is string (ASCII 48)
$foo += 2; // $foo is now an integer (2)
$foo = $foo + 1.3; // $foo is now a float (3.3)
$foo = 5 + "10 Little Piggies"; // $foo is integer (15)
$foo = 5 + "10 Small Pigs"; // $foo is integer (15)
?>
但这并不能回答我的问题。
它只是以一种非常晦涩的方式展示了动态 PHP 是如何实现的。
我认为这与评估无关(例如“”:=false 但“abc”:=true),不是吗?
还有一个问题:php 如何从像“10 Small Pigs”这样的字符串中提取“原始”整数?这可以通过类型转换(内部)来完成,还是需要某种包含字符转换或其他东西的字符串处理?
【问题讨论】:
标签: php types casting internals