无法将空字符串分配给字符串偏移

时间:2017-05-21 01:02:02

标签: php arrays string

我刚刚安装了PHP 7.1,现在我看到了这个错误:

PHP Warning:  Cannot assign an empty string to a string offset in /postfixadmin/variables.inc.php on line 31

第31行:

$fDomains[0] = "";

如何在PHP 7.1中清除$ fDomains [0]?

4 个答案:

答案 0 :(得分:2)

这是因为您想在第一个元素处取消设置字符串。只需使用substr($fDomains, 1);

答案 1 :(得分:0)

根据bug #71572,不允许分配空字符串。然后使用:

substr(fDomains,1); //like Kris Roofe wrote;

或使用这样的解决方案:

$fDomainsTmp = $fDomains;
for($x = 0 ; $x < length($fDomains); $x ++){
    if(condition character allow in string){ 
      $fDomainsTmp .= $fDomains[$x]; 
    }
}
$fDomains = $fDomainsTmp;

答案 2 :(得分:0)

($fDomains = "";)($fDomains[0] = "";)是错误的,但如果没有看到其他代码,则无法说哪个错误。

如果$fDomains是字符串,则作业$fDomains=''将清空其内容。如果$fDomains是一个数组,则应将其初始化为$fDomains=array()而不是$fDomains=""$fDomains[0]=''是清除字符串值的正确方法数组中的第一个元素

实际上,您在评论中说明的两个作业(在本答案的顶部复制)都是错误的 - 在括号表达式的末尾不应该是分号(;) ,除非你有一个PHP需要解释的字符串(例如,嵌入变量或转义序列),你应该使用单引号而不是双引号 - =""; 应该 =''

答案 3 :(得分:0)

此消息“ PHP警告:无法为字符串偏移量分配空字符串”的原因是: 我的$fDomains变量是作为字符串而不是作为数组启动的。