当前位置: 首页 > 面试题库 >

无法在PHP中将字符串偏移量用作数组

尉迟鸿熙
2023-03-14
问题内容

我正在尝试使用示例php代码模拟此错误,但尚未成功。任何帮助都会很棒。

“不能将字符串偏移量用作数组


问题答案:

对于PHP4

…这重现了错误:

$foo    = 'bar';
$foo[0] = 'bar';

对于PHP5

…这重现了错误:

$foo = 'bar';

if (is_array($foo['bar']))
    echo 'bar-array';
if (is_array($foo['bar']['foo']))
    echo 'bar-foo-array';
if (is_array($foo['bar']['foo']['bar']))
    echo 'bar-foo-bar-array';

(实际上来自bugs.php.net)

编辑,

因此,即使是字符串,为什么错误也不会出现在第一个if条件中。

因为PHP是一种非常宽容的编程语言,所以我猜。我将用代码说明我的想法:

$foo = 'bar';
// $foo is now equal to "bar"

$foo['bar'] = 'foo';
// $foo['bar'] doesn't exists - use first index instead (0)
// $foo['bar'] is equal to using $foo[0]
// $foo['bar'] points to a character so the string "foo" won't fit
// $foo['bar'] will instead be set to the first index
// of the string/array "foo", i.e 'f'

echo $foo['bar'];
// output will be "f"

echo $foo;
// output will be "far"

echo $foo['bar']['bar'];
// $foo['bar'][0] is equal calling to $foo['bar']['bar']
// $foo['bar'] points to a character
// characters can not be represented as an array,
// so we cannot reach anything at position 0 of a character
// --> fatal error


 类似资料:
  • 问题内容: 将我的php版本更新到5.4.0-3后,我收到一个奇怪的PHP错误。 我有这个数组: 当我尝试像这样访问它时,会收到奇怪的警告 我真的不想只编辑我的php.ini并重新设置错误级别。 问题答案: 请尝试这种方式。…我已经测试了此代码。

  • 我试图用PHP做一个待办事项列表 但是我收到这个错误警告:非法的字符串偏移量'todo' 在我的todo.php页面的顶部 在html部分 我该怎么解决这个?它一直警告我=>警告:非法字符串偏移量'todo' todo存在于我的mysql数据库中,其中包含待办事项activity的数据

  • 问题内容: 我遇到了一个使用ID来命名类型数组的旧应用,例如… 现在,我需要对它们进行重新排序,并且a 会使得在键为整数的情况下似乎不会发生这种情况。 如果我向每个索引添加,将在键周围显示双引号,我想显示它现在是一个字符串… 这使我可以轻松地对它们进行重新排序,而无需触及更多代码。 这是 行不通的 。 A 仍将它们显示为整数数组索引。 有没有一种方法可以将键强制为字符串,这样我就可以在不破坏数组的

  • 我需要从表单接收的值创建一个DateTime。问题是这个值像一个字符串一样被接收:“2016-10-10T08:29:06.959Z”,我需要接收像没有引号,因为如果我用引号接收,我就有下一个错误: DateTime::__construct():无法解析位置0()的时间字符串("2016-10-14T22:00:00.000Z"):意外字符 当我尝试将值转换为DateTime时,使用: 如果我尝

  • 问题内容: 有没有一种方法可以将整数转换为PHP中的字符串? 问题答案: 您可以使用该函数将数字转换为字符串。 从维护的角度来看,它显然是您正在尝试做的事情,而不是其他一些更深奥的答案。当然,这取决于您的上下文。

  • 问题内容: 是否可以使用String作为变量名。 问题答案: 您可以做的是将这些值关联(映射)到Music对象。这是示例: