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

时间:2015-02-18 16:39:58

标签: php string warnings

我的主页上有一个奇怪的(至少对我而言)错误:

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'] = "";
}

2 个答案:

答案 0 :(得分:0)

警告表示没有:

$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'] = "";
}

答案 1 :(得分:0)

这个错误说的是什么?

Warning: Illegal string offset 'en'

您正在尝试使用offest 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'];
}