在 PHP 7.4 中报错:Illegal offset type in isset or empty
1、在 PHP 7.4 中报错:Illegal offset type in isset or empty。如图1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | { "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、代码如下:
1 2 3 4 5 | if (isset( $setting [ 'settingId' ]) && isset( $currentSettings [ $setting [ 'settingId' ]])) { $setting = $setting + [ 'value' => $currentSettings [ $setting [ 'settingId' ]], ]; } |
3、打印 $setting,其值为对象。如图2
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | Array ( [info] => 轮播图标题、模块标题、商品的标题等 [label] => [type] => HEADER [default] => [content] => 标题 [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、将 $setting[‘settingId’] 转为 字符串。
1 2 3 4 5 6 7 8 | $settingId = isset( $setting [ 'settingId' ]) ? (string) $setting [ 'settingId' ] : null; // 获取当前设置值 if (isset( $settingId ) && isset( $currentSettings [ $settingId ])) { $setting = $setting + [ 'value' => $currentSettings [ $setting [ 'settingId' ]], ]; } |
5、打印转换后的字符串值如下
1 | 96b1c8b9-5b18-4760-9e26-50ab009ac011/settings/0 |
6、不再报错。
近期评论