php报错 Uninitialized string offset: 0

Posted

技术标签:

【中文标题】php报错 Uninitialized string offset: 0【英文标题】:php error reporting Uninitialized string offset: 0 【发布时间】:2012-02-26 15:54:10 【问题描述】:

我在 php 中做一些事情,而不是调试模式。所以我就是我们

error_reporting(E_ALL);

但是当我尝试访问字符串的任何字符时,由于错误报告,它会给我错误。

$sentence = "Hello World"; 
$sentence[0]   //Uninitialized string offset: 0

编辑:

public static function prepareSentence($sentence)

    $sentence = trim($sentence);
    if ($sentence[0] == '"')  //Uninitialized string offset: 0 
        $sentence = substr($sentence, 1, strlen($sentence));

    if ($sentence[strlen($sentence) - 1] == '"')
        $sentence = substr($sentence, 0, -1);

    if ($sentence[0] == '"' || $sentence[strlen($sentence) - 1] == '"')
        return self::prepareSentence($sentence);
    return $sentence;

我应该怎么做才能在开发模式下工作。我需要error_reporting(E_ALL);

提前致谢。

【问题讨论】:

多一点代码会更好。你以前用句子变量吗? 没问题。我刚刚编辑过。 运行良好:ideone.com/R6y3n 这不应该返回任何错误。您能否提供至少与本节相关的完整代码。据我所知,这很好 当我回显 $sentence 时,它​​会给出正确的字符串。 【参考方案1】:

您将 $sentence 创建为字符串 ($sentence = "Hello World";),然后将其作为数组调用 ($sentence[0])。 这不再被允许。 它曾经在后台静默工作,并为您将变量更改为一个数组,但从 PHP 7.1 开始它将完全失败。 以 E_NOTICE 错误的形式出现(实际上应该升级到 E_DEPRECATED 或其他东西,因为它现在失败了,但无论如何)。

【讨论】:

【参考方案2】:

对于空字符串,你不能使用$sentence[0],这会导致你得到通知。

可以添加!empty($sentence)查看是否为空。

【讨论】:

实际上我正在从文件中解析一堆字符串。所以文件不是空的。有很多字符串块,但由于该方法的一些空格出现空字符串并给出错误。这是我的错。我只是检查并意识到。发送。 empty的问题是empty("0")也会返回true。 @KeVin 以编程方式 0 和空是不同的,空是没有数据,而零是有效值。

以上是关于php报错 Uninitialized string offset: 0的主要内容,如果未能解决你的问题,请参考以下文章

TensorFlow问题“Attempting to use uninitialized value”

selenium调用Firefox和Chrome需要注意的一些问题,和出现的报错selenium:expected [object undefined] undefined to be a strin

无效的 SQL 类型:sqlKind = UNINITIALIZED - PLSQL 错误

NotSerializableException: kotlin.UNINITIALIZED_VALUE 设置 minifyEnabled 后为 true

清单合并错误:包名称“uninitialized.application.id”用于:AndroidManifest.xml

STL源代码分析(ch2 内存分配)uninitialized_fill