没有不值得去解决的问题,也没有不值得去学习的技术!

Error in PHP 7.4: Illegal Offset Type in isset or empty

Error in PHP 7.4: Illegal offset type in isset or empty.

1. Error in PHP 7.4: Illegal offset type in isset or empty. See Figure 1.

Error in PHP 7.4: Illegal offset type in isset or empty.
Figure 1
JSON

{
  "errors": [
    {
      "debugMessage": "Illegal offset type in isset or empty",
      "message": "Internal server error",
      "extensions": {
        "category": "internal"
      },
      "locations": [
        {
          "line": 3,
          "column": 5
        }
      ],
      "path": [
        "onlineStore",
        "theme"
      ],
      "trace": []
    }
  ],
  "data": {
    "onlineStore": {
      "theme": null,
      "__typename": "OnlineStore"
    },
    "__typename": "Query"
  }
}

2. The code is as follows:

PHP

if (isset($setting['settingId']) && isset($currentSettings[$setting['settingId']])) {
	$setting = $setting + [
			'value' => $currentSettings[$setting['settingId']],
		];
}

3. Print $setting; its value is an object. See Figure 2.

Print $setting; its value is an object
Figure 2
Plaintext
Array
(
    [info] => Carousel title, module title, product title, etc.
    [label] => 
    [type] => HEADER
    [default] => 
    [content] => Title
    [id] => Modules\OnlineStoreThemeGraphQL\Resolver\Id Object
        (
            [prefixes:protected] => Array
                (
                    [0] => 96b1c8b9-5b18-4760-9e26-50ab009ac011
                    [1] => settings
                    [2] => 0
                )

        )

    [__typename] => ThemeSettingHeader
    [settingId] => Modules\OnlineStoreThemeGraphQL\Resolver\Id Object
        (
            [prefixes:protected] => Array
                (
                    [0] => 96b1c8b9-5b18-4760-9e26-50ab009ac011
                    [1] => settings
                    [2] => 0
                )

        )

)

4. Convert $setting[‘settingId’] to a string.

PHP

$settingId = isset($setting['settingId']) ? (string) $setting['settingId'] : null;

// 获取当前设置值
if (isset($settingId) && isset($currentSettings[$settingId])) {
	$setting = $setting + [
			'value' => $currentSettings[$setting['settingId']],
		];
}

5. The converted string value is printed as follows:

Plaintext

96b1c8b9-5b18-4760-9e26-50ab009ac011/settings/0

6. No more errors.

关于作者 · 持续学习与技术实践

我是一名拥有 15 年以上开发经验的技术从业者,自 2013 年起持续运营个人技术博客,记录工作与个人项目中遇到的真实问题,以及解决问题过程中的探索、实践和思考。

除了技术写作,我也在持续开发和维护自己的独立项目,探索新技术和新工具在实际场景中的应用。我始终相信,没有不值得去解决的问题,也没有不值得去学习的技术。

如果这篇文章对你有所帮助,欢迎浏览博客中的其他文章,也欢迎交流技术经验与想法。

关于我  ·  GitHub  ·  邮件联系