如何在 PHP 中修复警告非法字符串偏移
Posted
技术标签:
【中文标题】如何在 PHP 中修复警告非法字符串偏移【英文标题】:How to fix Warning Illegal string offset in PHP 【发布时间】:2014-04-12 07:41:21 【问题描述】:我有这段 php 代码给了我错误:
警告:非法字符串偏移 'iso_format_recent_works' in C:\xampp\htdocs\Manta\wp-content\themes\manta\functions.php 开启 第 1328 行
这是与警告相关的代码:
if(1 == $manta_option['iso_format_recent_works'])
$theme_img = 'recent_works_thumbnail';
else
$theme_img = 'recent_works_iso_thumbnail';
当我执行var_dump($manta_option);
时,我收到以下结果:
["iso_format_recent_works"]=> 字符串(1) "1"
我尝试将$manta_option['iso_format_recent_works']
转换为int
,但仍然遇到同样的问题。
任何帮助将不胜感激!
【问题讨论】:
如果var_dump()
显示该输出,那么您的代码应该可以按预期工作。阵列是否在两者之间进行了修改?向我们展示完整的代码。
【参考方案1】:
神奇的词是:isset
验证条目:
if(isset($manta_option['iso_format_recent_works']) && $manta_option['iso_format_recent_works'] == 1)
$theme_img = 'recent_works_thumbnail';
else
$theme_img = 'recent_works_iso_thumbnail';
【讨论】:
感谢您的帮助。看起来数组设置不正确。 非常感谢!!当我在 WP 站点从 php56 切换到 php71 时遇到错误时,这对我有很大帮助!【参考方案2】:1.
if(1 == @$manta_option['iso_format_recent_works'])
$theme_img = 'recent_works_thumbnail';
else
$theme_img = 'recent_works_iso_thumbnail';
2.
if(isset($manta_option['iso_format_recent_works']) && 1 == $manta_option['iso_format_recent_works'])
$theme_img = 'recent_works_thumbnail';
else
$theme_img = 'recent_works_iso_thumbnail';
3.
if (!empty($manta_option['iso_format_recent_works']) && $manta_option['iso_format_recent_works'] == 1)
else
【讨论】:
仅代码的答案对教育 OP 和未来的 SO 读者几乎没有什么作用,请始终包含某种简单的英语解释,说明您的方法如何工作以及为什么它们是该问题的合适解决方案。跨度> 【参考方案3】:请检查您的密钥是否存在于数组中,而不是简单地尝试访问它。
替换:
$myVar = $someArray['someKey']
类似的东西:
if (isset($someArray['someKey']))
$myVar = $someArray['someKey']
或类似:
if(is_array($someArray['someKey']))
$theme_img = 'recent_works_iso_thumbnail';
else
$theme_img = 'recent_works_iso_thumbnail';
【讨论】:
以上是关于如何在 PHP 中修复警告非法字符串偏移的主要内容,如果未能解决你的问题,请参考以下文章
Drupal 8 警告:非法字符串偏移 'name' DrupalBootstrapStyles.php