PHP 7.1 数组兼职竟然可以重复,如何去掉这个特性?

2017-01-19 12:58:50 +08:00
 ioioioioioioi
$a['test'] = 'hi';
$a['test'] = 'hello';

得到的结果是
[
    [test] => hi
    [test] => hello
]
而我实际想要的是:
[
    [test] => hello
]
5478 次点击
所在节点    PHP
64 条回复
bianhua
2017-01-19 20:58:30 +08:00
@ioioioioioioi

“估计”是不能真正解决问题的。你必须提供样本,问题不但无法准确定位,而且未来很有可能会在不经意的地方出现,比如那些效验用户输入的函数里。
ioioioioioioi
2017-01-19 21:10:37 +08:00
@realpg
@bianhua
string(16) "meta_description"
string(32) "6d6574615f6465736372697074696f6e"
string(16) "meta_description"
string(32) "6d6574615f6465736372697074696f6e"
string(16) "meta_description"
string(32) "6d6574615f6465736372697074696f6e"
string(16) "meta_description"
string(32) "6d6574615f6465736372697074696f6e"
string(16) "meta_description"
string(32) "6d6574615f6465736372697074696f6e"
string(16) "meta_description"
string(32) "6d6574615f6465736372697074696f6e"
string(16) "meta_description"
string(32) "6d6574615f6465736372697074696f6e"
string(16) "meta_description"
string(32) "6d6574615f6465736372697074696f6e"
string(16) "meta_description"
string(32) "6d6574615f6465736372697074696f6e"
string(16) "meta_description"
string(32) "6d6574615f6465736372697074696f6e"
string(16) "meta_description"
string(32) "6d6574615f6465736372697074696f6e"
string(16) "meta_description"
string(32) "6d6574615f6465736372697074696f6e"
string(16) "meta_description"
string(32) "6d6574615f6465736372697074696f6e"
string(16) "meta_description"
string(32) "6d6574615f6465736372697074696f6e"
string(16) "meta_description"
string(32) "6d6574615f6465736372697074696f6e"
string(16) "meta_description"
string(32) "6d6574615f6465736372697074696f6e"
string(16) "meta_description"
string(32) "6d6574615f6465736372697074696f6e"
ioioioioioioi
2017-01-19 21:11:10 +08:00
@realpg
@bianhua 这是所有的 meta_description 键值
bianhua
2017-01-19 21:25:23 +08:00
@ioioioioioioi

那么这个问题很明显就不是“不可见字符”的问题了。

你还是准备一个最小可复现的样本然后压缩好上传到能公开下载的地方吧。只有看了文件才能进一步排查问题。
xbonline
2017-01-19 21:41:56 +08:00
也有可能是启用了啥 PHP 扩展造成的
iyaozhen
2017-01-19 22:35:01 +08:00
同意楼上,估计是什么扩展
ioioioioioioi
2017-01-19 22:35:25 +08:00
@bianhua 其他翻译也出现问了,键值也是 meta 开头 meta_description_detail , 测试了其他重复键值的,确并没用这样的错误。给键值加了 md5 后不再重复。
ioioioioioioi
2017-01-19 22:36:26 +08:00
@xbonline
@iyaozhen 但是加 md5 作为键值,不再出现重复的情况,啥情况?
yangqi
2017-01-19 22:56:15 +08:00
应该是环境配置问题,贴 php -v, php -m
ioioioioioioi
2017-01-19 23:02:57 +08:00
@yangqi
PHP 7.1.0-5+deb.sury.org~xenial+1 (cli) ( NTS )
Copyright (c) 1997-2016 The PHP Group
Zend Engine v3.1.0-dev, Copyright (c) 1998-2016 Zend Technologies
with Zend OPcache v7.1.0-5+deb.sury.org~xenial+1, Copyright (c) 1999-2016, by Zend Technologies

[PHP Modules]
calendar
Core
ctype
curl
date
dom
exif
fileinfo
filter
ftp
gd
gettext
hash
iconv
igbinary
json
libxml
mbstring
mcrypt
memcached
msgpack
mysqli
mysqlnd
OAuth
openssl
pcntl
pcre
PDO
pdo_mysql
Phar
posix
readline
Reflection
session
shmop
SimpleXML
sockets
SPL
standard
sysvmsg
sysvsem
sysvshm
tokenizer
wddx
xml
xmlreader
xmlwriter
xsl
Zend OPcache
zip
zlib

[Zend Modules]
Zend OPcache
Monstercat
2017-01-19 23:03:58 +08:00
第一反应就是不可见字符。。然而 42 楼开始事情变得有趣了起来😭关注一下
yangqi
2017-01-19 23:17:54 +08:00
via
2017-01-19 23:32:22 +08:00
楼主激动得连标题中的错别字都不顾了
ioioioioioioi
2017-01-20 09:01:46 +08:00
@yangqi 哈,高人,果然是 Opcache 的原因。竟然中招了,花了几乎一天时间就为了解决这个问题。不知道什么时候会修复。
quericy
2017-01-20 09:11:35 +08:00
刚点进这个帖子的时候我是不信的....涨姿势了
frozenshadow
2017-01-20 09:33:35 +08:00
昨天等到现在,终于有答案了
hoythan
2017-01-20 11:31:04 +08:00
这属于严重 BUG 了吧!
8355
2017-01-20 13:13:47 +08:00
@yangqi 6666666666
bianhua
2017-01-20 13:18:49 +08:00
@ioioioioioioi

你试试看禁用你的 OPCache ,看看问题是不是消失了。
ioioioioioioi
2017-01-20 13:34:56 +08:00
@bianhua 看 bug 描述,应该就是 opcache 导致的,我用循环生成数组,且键值加 md5 解决了。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/335582

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX