不能使用标量值作为数组警告

时间:2014-07-11 08:37:15

标签: php mysql

function update_user_voted($array,$userid=NULL)
{
    global $db;
    //$voted = array();
    if(!$userid)
        $userid = userid();
    if(phpversion < '5.2.0')
    {
        global $json;
        $js = $json;    
    }
    if(is_array($array))
    {
        $votedDetails = $db->select(tbl("users"),"voted"," userid = '$userid'");
        if(!empty($votedDetails))
            if(!empty($js))
                $voted = $js->json_decode($votedDetails[0]['voted'],TRUE);
            else
                $voted = json_decode($votedDetails[0]['voted'],TRUE);

        //$votedArray = $voted;
        $voted[] = $array;

        if(!empty($js))
            $votedEncode = $js->json_encode($voted);
        else
            $votedEncode = json_encode($voted);

        if(!empty($votedEncode))
            $db->update(tbl("users"),array("voted"),array("|no_mc|$votedEncode")," userid='$userid'");      
    }
}

当我使用这个功能时,它完全有效,但它只是显示了这个错误:

  

警告:无法在 /mydirectory/thisfilecontainingthiscode.php 上使用标量值作为数组 5160 ({{1} }})。

  • Apache 2.2.27版
  • PHP版本5.3.28
  • MySQL版本5.5.34-cll-lve
  • 架构x86_64
  • 操作系统linux

也说这个错误是新的,我从来没有遇到过这个功能的问题。它用在clip-bucket脚本中。

1 个答案:

答案 0 :(得分:2)

在增加索引之前,您必须将 $ voted 声明为数组。你试图用一个复杂的结构将一个新元素推送到数组(也可能是一个标量值),如果json数据返回一个标量,你应该无法使用 $ voted []

$ voted = array();