【问题标题】:Using string offset from variable Error使用来自变量 Error 的字符串偏移量
【发布时间】:2013-01-13 11:48:12
【问题描述】:

我在使用字符串偏移量访问数组时遇到错误。数组看起来像这样:

$array = array(
                    "first" => array("one","two","three"),
                    "second" => array("blabla"),
                    "third" => array("something","else"),
                    "fourth" => array("next","nextnext","nextnextnext")
    );

我正在尝试根据我拥有的字符串获取内部数组之一,并使用该字符串作为偏移量,如下所示:

$curArray = $array[$this->string];

但是每次我运行脚本时,我都会在该行得到一个错误。你能告诉我为什么吗? 我得到的错误是“非法偏移类型”。 谢谢

【问题讨论】:

  • 什么是$this$this->string 是什么?
  • 例如,要调用第三个数组,您应该使用类似 $curArray = $array["third"];
  • 嗯,代码是类函数的一部分,所以$this->string指的是对象的$string属性的值
  • 试试var_dump($this->string);并检查它包含什么
  • 它在所有情况下都包含类似object(SimpleXMLElement)#7 (1) { [0]=> string(3) "second" }

标签: php arrays variables offset


【解决方案1】:

$this->string 很可能不是您想的那样。此错误是由非字符串或数字用作数组键引起的。

如果你这样做var_dump($this->string);你应该能够看到实际的价值是什么。

编辑: SimpleXMLElement 是一个对象,因此不能用作数组键。您可以将其转换为这样的字符串:

$key = (string)$this->string;
$curArray = $array[$key];

【讨论】:

    【解决方案2】:

    $this->string 的值未被识别为实际字符串值。

    您可能需要运行 print_r ( $this->string ) 以更好地了解其中包含的内容。

    见:http://php.net/manual/en/language.types.array.php

    您可以使用is_string(..) 函数来确定$this->string 是否有效,如果您的查找有效,则可以使用array_key_exists () 进行检查。

    【讨论】:

      猜你喜欢
      • 2011-01-17
      • 1970-01-01
      • 2012-02-13
      • 1970-01-01
      • 2016-06-07
      • 1970-01-01
      • 2019-12-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多