为了账号安全,请及时绑定邮箱和手机立即绑定

php7.0和php7.2的变量类型转换问题?

php7.0和php7.2的变量类型转换问题?

PHP
犯罪嫌疑人X 2019-03-12 12:36:19
代码001 7.0版本 <?php $a=''; $a['1']="哈哈哈"; $a['0']="zzz"; var_dump($a); echo "PHP版本:".phpversion(); ?> 结果001 7.0版本 array(2) { [1]=> string(9) "哈哈哈" [0]=> string(3) "zzz" } PHP版本:7.0.0-dev 代码002 5.6版本 <?php $a=''; $a['1']="哈哈哈"; $a['0']="zzz"; var_dump($a); echo "PHP版本:".phpversion(); ?> 结果002 5.6版本 array(2) { [1]=> string(9) "哈哈哈" [0]=> string(3) "zzz" } PHP版本:5.6.9-0+deb8u1 代码003 7.2版本 <?php echo PHP_VERSION; try { $a = ''; // $a->a(); $a['1'] = "哈哈哈"; $a['0'] = "zzz"; var_dump($a); } catch (Exception $e) { var_dump($e->getMessage()); } catch (Error $Error) { var_dump($Error->getMessage()); return; } catch (ParseError $e) { echo 123; var_dump($Error->getMessage()); } finally { echo 'end'; } 7.2.3结果 7.2.3string(2) "z�" end 问题 7.2内部为啥不支持这种类型转换了,从哪里可以看到具体的变化呢?内核代码也行。. 测试地址 : 在线执行php多版本
查看完整描述

4 回答

?
HUX布斯

TA贡献1876条经验 获得超6个赞

查看完整回答
反对 回复 2019-03-18
?
慕盖茨4494581

TA贡献1850条经验 获得超11个赞

虽然我也不知道哪里可以看到具体的变化,但是我觉得这样才是比较严谨的

PHP的包容性太强了,都是给惯的坏毛病,以后接触别的语言,满头的包

查看完整回答
反对 回复 2019-03-18
?
米琪卡哇伊

TA贡献1998条经验 获得超6个赞

我猜下, >=7.1的时候

$a = ''; // 这时候 $a[0]还不存在;
$a[0] = "hello world"; // 相当于给字符串 $a的索引0的位置赋值
echo $a; // 'h'  输出为这个大概是string索引这个位置只能存一个字符 

类型应该还是弱类型

$a[] = "hello world";
var_dump($a); // array(1) { [0]=> string(11) "hello world" } 
$a = "";
var_dump($a); // string(0) ""
查看完整回答
反对 回复 2019-03-18
  • 4 回答
  • 0 关注
  • 549 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信