0

我在下面有以下代码,它工作得很好——但现在当我报告了所有错误时——我看到了这个:

注意:未初始化的字符串偏移量:C:\xampp\htdocs\website\dev\lib\player.class.php 第 110 行中的 9 注意:未初始化的字符串偏移量:C:\xampp\htdocs\website\dev\lib\ 中的 10 player.class.php 在第 110 行 注意:未初始化的字符串偏移:11 在 C:\xampp\htdocs\website\dev\lib\player.class.php 在第 110 行 注意:未初始化的字符串偏移:12 在 C:\xampp\ htdocs\website\dev\lib\player.class.php 在第 110 行 注意:未初始化的字符串偏移量:13 在 C:\xampp\htdocs\website\dev\lib\player.class.php 在第 110 行

110 号线是

$this->formattedname .= "<span style='color:" . $colour . "'>" . $this->username[$i] . "</span>";

在 foreach

有谁知道我做错了什么?我无法找到解决这些错误的解决方案.. :(

if ($this->admin == 1) {
            $colours = explode("~", $this->gradientcolours);
            $gradient = new ColourGradient(array(0 => $colours['0'], (strlen($this->username) - 1) => $colours['1']));
            $this->formattedname .= ($this->admin == 1) ? "<b><i><a style='text-decoration: none;' title='" . $this->title . "' href='/profile/" . $this->id . "'>" : "<b><a title='" . $this->title . "' href='/profile/" . $this->id . "'>";
            $this->formattedname2 = ($this->admin == 1) ? "<b><i><a style='text-decoration: none;' title='" . $this->title . "' href='/profile/" . $this->id . "'>" : "<b><a title='" . $this->title . "' href='/profile/" . $this->id . "'>";



                    foreach($gradient as $i => $colour) {
                $this->formattedname .= "<span style='color:" . $colour . "'>" . $this->username[$i] . "</span>";

            }

            $this->formattedname .= ($this->admin == 1) ? "</a></i></b>" : "</a></b>";

            $this->formattedname2 .= ($this->admin == 1) ? "</a></i></b>" : "</a></b>";

        }
4

4 回答 4

3

如果以下任何变量实际上是字符串或 null 而不是数组,则会发生此错误。

在使用它们之前尝试测试和初始化你的数组

if( !isset($this->username[$i]) ) $this->username[$i] = '' ;
于 2013-09-29T11:09:33.973 回答
0

这不是错误,而是通知。错误或警告意味着您做错了/犯了错误。通知只是暗示某些事情可能会做得更好。

告诉你的是,你正在使用一个不存在的密钥:

$array[0] = 0;
$array[1] = 1;
$array[2] = 2;

echo $array[0]; // no notice, it exists
echo $array[2]; // no notice, it exists
echo $array[9]; // the notice will fire, because key 9 doesn't exist

在您的代码中,我无法确定哪一行是 110,但我猜$this->username[$i]是问题所在,用户 9 到 13 不存在

如果$this->username不是数组而是字符串,它将返回第 N 个字符:

$string = "example";
echo $string[1]; // will return X, an array starts counting at 0 (zero-index-based)
echo $string[50]; // blank echo, and the notice because character 50 doesn't exist
于 2013-09-29T11:04:20.027 回答
0

如果您.=对字符串使用串联,您的字符串必须像这样初始化

$this->formattedname = "";

并在连接之后

于 2013-09-29T11:05:24.140 回答
0

问题在于这一行:

$this->username[$i].

您的用户名可能有 5 个字符,而 $i 可以是 12 个字符。使用适当的条件进行验证。

于 2013-09-29T11:05:55.747 回答