警告:非法的字符串偏移量';en';


Warning: Illegal string offset 'en'

我的主页上出现了一个奇怪的(至少对我来说)错误:

Warning: Illegal string offset 'en'

这是代码,请帮忙:

if (isset($s['target_data']['description']) && $s['target_data']['description']){
    if (isset($s['target_data']['description'][$lang])){
        $s['target_data']['description'] = $s['target_data']['description'][$lang];
    } else {
        $s['target_data']['description'] = $s['target_data']['description']['en'];
    }
} else {
    $s['target_data']['description'] = "";
}

这个错误说明了什么?

Warning: Illegal string offset 'en'

您正试图访问一个en最差的字符串。就像访问数组一样。除了字符串不支持命名键。。。

我假设您期望$s['target_data']['description']是一个数组。试着检查一下,看看密钥是否存在:

// THIS:
//
// } else {
//   $s['target_data']['description'] = $s['target_data']['description']['en'];
// }
//
// BECOMES:
//
elseif (is_array($s['target_data']['description']) && $s['target_data']['description']['en']) {
    $s['target_data']['description'] = $s['target_data']['description']['en'];
}

警告表示没有:

$s['target_data']['description']['en']

设置在您的数组中。

你可以通过添加简单的检查来修复它:

<?php
if (isset($s['target_data']['description'])
    && $s['target_data']['description']
) {
    if (isset($s['target_data']['description'][$lang])) {
        $s['target_data']['description']
            = $s['target_data']['description'][$lang];
    } elseif (isset($s['target_data']['description']['en'])) { // here one more check added
        $s['target_data']['description']
            = $s['target_data']['description']['en'];
    }
    else { // nothing set
        $s['target_data']['description'] = '';
    }
} else {
    $s['target_data']['description'] = "";
}