我该如何解决这个错误:非法字符串偏移'文字'?

时间:2014-01-25 15:44:41

标签: php string text offset

我有这段代码:

if(strlen($userdata->yim['text']) > 2 && !isset($_POST['step1']) ){

    $GLOBALS['error']       = 1;
    $GLOBALS['error_type']  = "tip";
    $GLOBALS['error_msg']   = $userdata->yim['text'];}

我在这个网站上看到了这个错误,但我没有想法如何在我的特定代码上应用修复程序。如果我重新发布问题,我很抱歉。

3 个答案:

答案 0 :(得分:0)

尝试执行:var_dump($userdata->yim);以验证yim是否确实存在且包含密钥“text”。

甚至只是var_dump($userdata);

答案 1 :(得分:0)

$userdata->yim['text']未设置,因此您应首先检查:

if(isset($userdata->yim['text']) && strlen($userdata->yim['text']) > 2 && !isset($_POST['step1']) ){

但是,如果该部分代码依赖于该值,那么在此之前就出现了问题,这只会隐藏该问题。

答案 2 :(得分:0)

为了进行调试,您需要使用print_r(),以便可以看到对象或数组的内容:

// see what $userdata contains - update your question with the results of the line below
echo '<div style="background-color:white; padding:15px;"><pre>'.print_r($userdata, true).'</pre></div>';

// see what $userdata->yim contains - update your question with the results of the line below as well
echo '<div style="background-color:white; padding:15px;"><pre>'.print_r($userdata->yim, true).'</pre></div>';

if(strlen($userdata->yim['text']) > 2 && !isset($_POST['step1']))
{
    $GLOBALS['error']       = 1;
    $GLOBALS['error_type']  = "tip";
    $GLOBALS['error_msg']   = $userdata->yim['text'];
}