PHP7.1 报错 Warning Illegal string offset

报错如下:

Warning: Illegal string offset ‘阿根廷‘ in F:\wnmp\www\test.php on line 24

Warning: Illegal string offset ‘中国‘ in F:\wnmp\www\test.php on line 24

Warning: Illegal string offset ‘印尼‘ in F:\wnmp\www\test.php on line 24

原因:

原始代码如下

<?php

$area = ‘‘; // 重点在这、声明 $area 为字符串

$lang = ‘zh‘;

$data_area = array(

‘AR‘ => array( ‘zh‘ => ‘阿根廷‘,‘en‘ => ‘Argentina‘ ),

‘CN‘ => array( ‘zh‘ => ‘中国西部‘,‘en‘ => ‘China West‘ ),

‘ID‘ => array( ‘zh‘ => ‘印尼‘,‘en‘ => ‘Indonesia‘ )

);

foreach( $data_area as $k => $v ){

$area[$k] = $v[$lang];

}

// 然后这里循环、写入数据、为 $area 为数组

$area = array_flip( $area );

print_r( $area );

PHP7.1以后、对变量的类型要求比较严格

原本声明为 字符串、但是循环的时候写入数据的时候要转为数组类型的、

在 <=PHP7.0 的版本中是都可以使用的、但是在PHP7.1中报错

解决:

1:声明为数组类型 $area = array();

2:直接不声明、也没有任何问题、

因为在PHP中、全局变量不能在局部变量中使用、局部变量不能在全局变量中使用

只有GLOBALS声明的变量才能在局部、全局中互相使用、

时间: 2024-12-04 18:30:06

PHP7.1 报错 Warning Illegal string offset的相关文章

针对PHP版本升级后出现PHP Warning: Illegal string offset错误的解决办法

新项目使用的是ECSHOP的程序,用的PHP版本比较高,导致错误一片,普通错误写法修改下就可以解决,但针对PHP Warning: Illegal string offset,百度了几次都未解决, 最后添加一个判断解决问题,避开此错误 if(is_array($arrVar)){ 语句 }

关于报错:Warning: Cannot modify header information - headers already sent by (output started at

8月5日,第一个项目即将完成,测试时,发现登录功能会出现小问题:记住密码的时候会报错 Warning: Cannot modify header information - headers already sent by (output started at 经过再三在百度上查询,终于查到错误的关键原因:[setcookie之前不可以有html标签内容].导致出现这种错误的方式有很多种,但惟独这种解释最让我理解. (因为百度知道的内容不可以复制了,只能贴出地址,有详细解释)地址[http://z

【Mysql】存储emoji表情报错(Incorrect string value: &#39;\xF0\x9F\x98\x82\xF0\x9F...&#39;)的解决方案

普通的字符串或者表情都是占位3个字节,所以utf8足够用了,但是移动端的表情符号占位是4个字节,普通的utf8就不够用了,为了应对无线互联网的机遇和挑战.避免 emoji 表情符号带来的问题.涉及无线相关的 MySQL 数据库建议都提前采用 utf8mb4 字符集,这必须要作为移动互联网行业的一个技术选型的要点 Mysql 版本的限制,Mysql 5.5.3之前的版本,支持的utf8为3字节的,Mysql 5.5.3之后的版本支持utf8mb4 修改mysql的配置文件,windows下的为my

(TODO:)下载图片,报错:warning: could not load any Objective-C class information from the dyld shared cache. This will significantly reduce the quality of type information available.

想使用NSInvocationOperation下载图片,然而并没有下载下来, NSData为nil, 还有报错:(打断点就报错) warning: could not load any Objective-C class information from the dyld shared cache. This will significantly reduce the quality of type information available. 现在这两个问题还没解决, 以后再看吧,先提交到g

JavaScript在IE6,IE7下报错&#39;expected identifier, string or number&#39;

问题: 代码在Forefox和IE8下工作正常,但是在IE6下报错: expected identifier, string or number 假如变量options有多个选项,那么我们可以用逗号分开:但是最后一个选项后不可以有逗号.虽然IE8和Firefox可以忽略这个逗号,但是IE6下会报错(据说IE7下也会报错) 解决方案: 解决方法很简单,把多余的逗号删除就可以了. var options = { target: '.content' //注重不可以加逗号 }; JavaScript在

mysql 存储 emoji报错( Incorrect string value: &#39;\xF0\x9F\x98\x84\xF0\x9F)的解决方案

1.报错原因: mysql utf-8 编码储存的是 2-3个的字节,而emoji则是4个字节. 2.解决办法: 修改mysql的配置文件,windows下的为my.ini(linux下的为my.cnf),修改的内容都一样. [client] default-character-set = utf8mb4 [mysql] default-character-set = utf8mb4 [mysqld] character-set-server = utf8mb4 collation-server

报错:required string parameter XXX is not present

报错:required string parameter XXX is not present 不同工具发起的get/delete请求,大多数不支持@RequestParam,只支持@PathVariable形式 若api在调用的时候,如果存在重类型,但不重名:例如:/id与/name,两者在类型上是一样 原文地址:https://www.cnblogs.com/xianlei/p/8719166.html

Docker报错 WARNING: IPv4 forwarding is disabled. Networking will not work.

问题:创建容器的时候报错WARNING: IPv4 forwarding is disabled. Networking will not work. # docker run -it -p 30001:22 --name=centos-ssh centos /bin/bash WARNING: IPv4 forwarding is disabled. Networking will not work. 解决办法:# vim /usr/lib/sysctl.d/00-system.conf 添加

SQL语句报错:Incorrect string value: &#39;\xE9\x98\xBF\xE6\x96\xAF...&#39;

很明显是编码的问题.检查了一下$conn->query("set names utf8");已经加在代码里了.那莫非是数据库编码不是utf8? 看了一下 还真不是 于是右键要修改的表,点击alter table,做了如下修改. 不报任何期望的重启了服务器又试了一次 果然还是那个错.... 这种场面我见多了,早就看淡了.所以接着排查问题. 发现在SQL语句复制到数据库执行也是这个亚子,中文用命令添加完全不行,但是手动添加却是正常的: 听网上的把编码改成utf8mb4依然不行 然后!