【问题标题】:PHP Notice: Uninitialized string offset: -1PHP 注意:未初始化的字符串偏移量:-1
【发布时间】:2016-12-18 14:25:51
【问题描述】:

我在第 14 行收到此错误,此代码用于获取 url 的一部分(例如:enterforce.nnnet/server2/server3/ 用于 server2 示例)。 它正在工作,但我收到了这个错误:

PHP Notice:  Uninitialized string offset: -1

完整代码:

<?php

class simpleUrl{
    var $site_path;
    function __construct($site_path){
        $this->site_path = $this->removeSlash($site_path);
    }

    function __toString(){
        return $this->site_path;
    }

    private function removeSlash($string){
        if($string[strlen($string) - 1] == '/')
            $string = '/';
        return $string;
    }
    function segment($segment){
        $url = str_replace($this->site_path, '', $_SERVER['REQUEST_URI']);
        $url = explode('/', $url);
        if( isset($url[$segment]) )
            return $url[$segment];
        else
            return false;
    }
}

?>

第 14 行:

if($string[strlen($string) - 1] == '/')

【问题讨论】:

  • 那是因为您将一个空字符串传递给removeSlash() 方法。因为strlen($string) 等于0,你最终会得到if($string[- 1] == '/'),这就是你得到这个错误的原因。首先检查字符串的长度,然后执行你的操作。

标签: php string offset notice


【解决方案1】:

问题的原因是$string 变量为空。看来,你只需要去掉尾部的斜杠。试试这个:

private function removeSlash($string){
    return rtrim($string, '/');
}

http://php.net/manual/en/function.rtrim.php

【讨论】:

    【解决方案2】:

    当您的字符串长度为 0 时,您会收到此错误,因为字符串中没有数字为“-1”的字符。尝试在该函数之前添加一些字符串验证

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-11
      • 1970-01-01
      • 1970-01-01
      • 2018-11-21
      相关资源
      最近更新 更多