代码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 回答
米琪卡哇伊
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) ""
- 4 回答
- 0 关注
- 549 浏览
添加回答
举报
0/150
提交
取消