php 5.6 与之前版本不兼容中的数组属性定义辨析
在php5.6官方文档的不兼容页(http://php.net/manual/zh/migration56.incompatible.php)中提到了几个与以前版本不兼容的情况,其中提到了为类定义数组属性时,不兼容的情况,原文及示例如下:
在 PHP 5.6 之前的版本中,为类定义数组类型的属性时, 如果数组中同时使用了显式数组键和隐式数组键,并且显式的键和隐式的序列键相同, 那么数组的键将被覆盖。例如:
<?php
class C {
const ONE = 1;
public $array = [
self::ONE => 'foo',
'bar',
'quux',
];
} var_dump((new C)->array);
?>
以上示例在PHP 5.5中输出:
array(2) {
[0]=>
string(3) "bar"
[1]=>
string(4) "quux"
}
在PHP 5.6中输出:
array(3) {
[1]=>
string(3) "foo"
[2]=>
string(3) "bar"
[3]=>
string(4) "quux"
}
$array = [
ONE=>'foo',
'bar',
'quux'
];
var_dump($array);
输出:
array(3) {
[1] =>
string(3) "foo"
[2] =>
string(3) "bar"
[3] =>
string(4) "quux"
}
1.2 非初始化时赋值:
define('ONE', 1);
class C {
public $array;
}
$c = new C;
$c->array = [ONE=>'foo','bar','quux'];
var_dump($c->array);
输出:
array(3) {
[1] =>
string(3) "foo"
[2] =>
string(3) "bar"
[3] =>
string(4) "quux"
}
define('ONE', 1);
class C {
const ONE = 1;
public $array;
public function __construct() {
$this->array = array(
'bar',
ONE => 'foo',
'quux',
);
}
}
$c = new C;
var_dump($c->array);
输出:
array(3) {
[0] =>
string(3) "bar"
[1] =>
string(3) "foo"
[2] =>
string(4) "quux"
}
2. 显式键对隐式键的覆盖:
define('ONE', 1);
class C {
const ONE = 1;
public $array = array(
'bar',
'quux',
ONE => 'foo',
'guru'
);
}
$c = new C;
var_dump((new C)->array);
输出:
array(3) {
[0] =>
string(3) "bar"
[1] =>
string(3) "foo"
[2] =>
string(4) "guru"
}
3. 字面量常量作为显式键名:
class C {
public $array = array(
'bar',
'quux',
1 => 'foo',
'guru'
);
}
$c = new C;
var_dump((new C)->array);
输出:
array(3) {
[0] =>
string(3) "bar"
[1] =>
string(3) "foo"
[2] =>
string(4) "guru"
}
class C {
public $array = array(
1 => 'foo',
'bar',
'quux',
);
}
$c = new C;
var_dump((new C)->array);
输出:
array(3) {
[1] =>
string(3) "foo"
[2] =>
string(3) "bar"
[3] =>
string(4) "quux"
}
<?php
$array = array(
"a",
"b",
6 => "c",
"d",
);
var_dump($array);
?>
以上例程会输出:
array(4) {
[0]=>
string(1) "a"
[1]=>
string(1) "b"
[6]=>
string(1) "c"
[7]=>
string(1) "d"
}
php 5.6 与之前版本不兼容中的数组属性定义辨析的更多相关文章
- 解决Selenium与firefox浏览器版本不兼容问题
因为在用java打开firefox浏览器的时候报错 org.openqa.selenium.firefox.NotConnectedException: Unable to connect to ho ...
- Selenium2学习-007-WebUI自动化实战实例-005-解决 Firefox 版本不兼容:org.openqa.selenium.WebDriverException: Failed to connect to binary FirefoxBinary
此文主要讲述 Java 运行 Selenium 脚本时,因 Friefox 浏览器版本与 selenium-server-standalone-x.xx.x.jar 不兼容引起的 org.openqa ...
- cuda和gcc版本不兼容
gcc8.1和cuda9.0版本不兼容,比较坑. 下面是各版本cuda支持的gcc: 从CUDA 4.1版本开始,现在支持gcc 4.5.gcc 4.6和4.7不受支持. 从CUDA 5.0版本开始, ...
- Gradle 'MYasprj' project refresh failed Error:CreateProcess error=216, 该版本的 %1 与您运行的 Windows 版本不兼容
Gradle ‘MYasprj’ project refresh failed Error:CreateProcess error=216, 该版本的 %1 与您运行的 Windows 版本不兼容.请 ...
- 模块XXXX可能与您正在运行的Windows版本不兼容。检查该模块是否与regsvr32.exe的x86(32位)x64(64位)版本兼容。
最近自己在编写ActiveX控件.遇到的麻烦事不少. 今天遇到了这个问题“模块XXXX可能与您正在运行的Windows版本不兼容.检查该模块是否与regsvr32.exe的x86(32位)x64(64 ...
- ubuntu下python安装pandas和numpy等依赖库版本不兼容的问题RuntimeWarning: numpy.dtype size changed
习惯了linux下用pip install numpy及pip install pandas命令了.折腾了好久了. 上来先在python3中pip3 install numpy装了numpy,然后再p ...
- 【我的Android进阶之旅】解决 Error:CreateProcess error=216, 该版本的 %1 与您运行的 Windows 版本不兼容。请查看计算机的系统信息,了解是否需要 x86
一.错误描述 刚刚打开Android Studio新建一个项目,然后就编译不了,报了如下所示的错误: 错误描述为: Error:CreateProcess error=216, 该版本的 %1 与您运 ...
- 解决selenium与firefox版本不兼容问题
Python环境下类比 个人使用 32位环境 Python 2.7.12 Selenium 2.53.6 Firefox 47.01 安装selenium可用pip选择对应版本,参考另一教程. 因为在 ...
- idea2019版与maven3.6.2版本不兼容引发的血案
昨天遇到了点问题解决浪费了一些时间(导致更新内容较少)回顾下问题 项目出现Unable to import maven project: See logs for details 翻了好多博客 莫名的 ...
随机推荐
- 找到一篇关于2.4/5G信道的新介绍
关于部分手机无法搜索到5G wifi信号的解决方法第一次在论坛发基础理论贴,希望能普及关于5G wifi的基础知识. 发此贴的原因是基于本人突然发现:MX3刷了3.4.1系统后,搜索不 ...
- Thinkphp 查询条件 and 和 or同时使用即复合查询
thinkphp 3.2快捷查询OR查询&分割表示AND查询讲解 快捷查询方式是一种多字段查询的简化写法,可以进一步简化查询条件的写法,在多个字段之间用|分割表 ...
- Pthreads 环境配置,VisualStudio
▶ Visual Studio 下配置MPI环境 ● 下载 Pthreads(http://pthreads.org/),解压. ● 针对 x64 程序的配置 ■ 将 Pre-built.2\incl ...
- C# Panel控件截图
[System.Runtime.InteropServices.DllImportAttribute("gdi32.dll ")] private static extern bo ...
- 可视化库-Matplotlib基础设置(第三天)
1.画一个基本的图 import numpy as np import matplotlib.pyplot as plt # 最基本的一个图,"r--" 线条加颜色, 也可以使用l ...
- mpg123解码相关
int attribute_align_arg mpg123_decode(mpg123_handle *mh, const unsigned char *inmemory, size_t inmem ...
- 浅探SpringMVC中HandlerExecutionChain之handler、interceptor
讲解HandlerExecutionChain之前,先大致了解下SpringMVC的核心开发步骤: 在web.xml中部署DispaterServlet,并配置springmvc.xml等文件; 将映 ...
- torque
torque - 必应词典 美[tɔrk]英[tɔː(r)k] n.(使机器等旋转的)转矩 网络扭矩:扭力:力矩 变形过去分词:torqued:现在分词:torquing:第三人称单数:torques ...
- JS Code Snippet --- Cookie
<a id="quitBtn" href="#" class="exit">Exit</a> <a id=&q ...
- python之selenium调用js(execute_script)
转载: http://www.cnblogs.com/fnng/p/3230768.html 本节重点: 调用js方法 execute_script(script, *args) 在当前窗口/框架 同 ...