为什么我会得到一个“;非法的字符串偏移量";错误


Why am I getting an "Illegal string offset" error?

为什么会出现这些错误?

警告:第48行C:''examplep''htdocs''includes''stream.class.php中的非法字符串偏移量'en'

警告:第60行C:''examplep''htdocs''includes''stream.class.php中的非法字符串偏移量'en'

这是我的密码。

$s['target_data']['title'] = $s['target_data']['title']['en'];
$s['target_data']['description'] = $s['target_data']['description']['en'];

问题是$s['target_data']['title']是一个字符串,而不是您所期望的数组。

PHP允许您使用数组类型语法对字符串进行索引(例如,$string[0]返回$string的第一个字符),但这只适用于像[0]这样的数字索引-您不能使用像["en"]这样的字符串索引,这正是错误所抱怨的。

您展示的代码似乎试图将变量从数组转换为字符串,并将其存储回同一个变量中。你可能会运行它两次,然后第二次出现错误,因为它不再是一个数组吗?

   (array) $s['target_data']['title'] = (array) $s['target_data']['title']['en'];

   (array) $s['target_data']['description'] = (array)$s['target_data']['description']['en'];

如果您的$s['target_data']['description']和$s['target_data']['title']不是数组,则可以将其强制转换为(array)