我的主页上出现了一个奇怪的(至少对我来说)错误:
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'] = "";
}