如何在 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

PHP 警告:jwt 的非法字符串偏移

更新后的Wordpress“非法字符串偏移”

警告:非法字符串偏移量'city'Symfony表单搜索

Laravel 4 - 警告:isset 中的非法偏移类型或 \bootstrap\compiled.php 中为空

从api流明获取数据时出现错误的非法字符串偏移[重复]