Php 只有第一个字节将分配给字符串偏移警告
在迁移到PHP8之后,出现了这个错误;你知道如何解决这个问题吗 PHP警告:只有第一个字节将分配给字符串偏移量 它出现在这两行中:Php 只有第一个字节将分配给字符串偏移警告,php,php-8,Php,Php 8,在迁移到PHP8之后,出现了这个错误;你知道如何解决这个问题吗 PHP警告:只有第一个字节将分配给字符串偏移量 它出现在这两行中: if( !isset($value[1]) ) $value[1] = 'NULL' ; if( !isset($value[2]) ) $value[2] = 'NULL' ; 以下是它们周围的代码: foreach ($chars as $value) { if( !isset($value[1]) ) $value[1] = 'NULL' ;
if( !isset($value[1]) ) $value[1] = 'NULL' ;
if( !isset($value[2]) ) $value[2] = 'NULL' ;
以下是它们周围的代码:
foreach ($chars as $value) {
if( !isset($value[1]) ) $value[1] = 'NULL' ;
if( !isset($value[2]) ) $value[2] = 'NULL' ;
if (!is_null($value[1])) {
$newstring = "?" . $value[1];
}
if ($value[2] !== null) {
$newstring = $newstring . '&' . $value[2];
}
}
错误消息的关键部分是短语“字符串偏移量”;它告诉您,
$value[1]
指的不是数组中的元素,而是字符串中的字符
让我们构建一个简单的示例:
$value='hello world';
$value[1]=“空”;
var_dump(价值);
这里,$value
是一个字符串,因此$value[1]
指的是“字符串偏移量1”处的字符,即e
我们可以重写那个字符,但只能使用不同的单个字符。因此PHP忽略ULL
,保留N
,结果是string(11)“hnlloworld”
这段代码的实际行为,在PHP8中唯一的新功能是额外的消息,它可能不是您想要做的-如果您只需要'N'
,为什么还要麻烦编写'NULL'
在这个特定的例子中,很可能原始代码期望
$value
是一个数组,并以某种方式得到一个字符串(在所示的循环中,$chars
应该是一个数组数组,但实际上是一个字符串数组)。我们看不到更广泛的上下文,因此无法知道修复程序需要在哪里。错误消息的关键部分是短语“字符串偏移”;它告诉您,$value[1]
指的不是数组中的元素,而是字符串中的字符
让我们构建一个简单的示例:
$value='hello world';
$value[1]=“空”;
var_dump(价值);
这里,$value
是一个字符串,因此$value[1]
指的是“字符串偏移量1”处的字符,即e
我们可以重写那个字符,但只能使用不同的单个字符。因此PHP忽略ULL
,保留N
,结果是string(11)“hnlloworld”
这段代码的实际行为,在PHP8中唯一的新功能是额外的消息,它可能不是您想要做的-如果您只需要'N'
,为什么还要麻烦编写'NULL'
在这个特定的例子中,很可能原始代码期望
$value
是一个数组,并以某种方式得到一个字符串(在所示的循环中,$chars
应该是一个数组数组,但实际上是一个字符串数组)。我们看不到更广泛的背景,因此无法知道您的修复程序需要在哪里。什么类型的$value
?仅供参考,该代码相当不完整-为空和==null
检查不会做任何有用的事情,因为前两行已经确保这些变量都不是null。它实际上可以简化为$newstring='?'。($value[1]??“NULL”)。&。($value[2]??“NULL”)
什么类型的$value
?仅供参考,该代码已被破坏-该为空和==null
检查不会做任何有用的事情,因为前两行已经确保这些变量都不是null。它实际上可以简化为$newstring='?'。($value[1]??“NULL”)。&。($value[2]??“NULL”)代码>