Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 只有第一个字节将分配给字符串偏移警告_Php_Php 8 - Fatal编程技术网

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' ;

在迁移到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[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”)