您现在的位置是:首页 >技术交流 >thinkphp报错 in_array() expects parameter 2 to be array, object given网站首页技术交流

thinkphp报错 in_array() expects parameter 2 to be array, object given

qq_35738963 2024-06-17 10:14:51
简介thinkphp报错 in_array() expects parameter 2 to be array, object given

我的问题是

foreach ($books as $k => $v) {
            if (in_array($v['id'], $book_id)) {   //这个地方报错的
                $books[$k]['check'] = 'checked';
            }else {
                $books[$k]['check'] = '';
            }
        }

这个问题是因为 你的变量$books“数组“”其实不是真正的数组而是  php的 object(stdclass)  类型

问题

知道了问题其实解决起来就简单了转换维数组就可以了

定义个函数

public function object2array(&$object) {
             $object =  json_decode( json_encode( $object),true);
             return  $object;
    }        

然后在你业务函数里面调用

if (is_object($book_id)) {
                $arr = (array)($book_id);
            } else {
                $arr = &$book_id;
            }
            if (is_array($arr)) {
                foreach($arr as $varName => $varValue){
                    $arr[$varName] = $this->object2array($varValue);//这里调用
                }
            }
            
        $book_id = $arr;这个就是转换为的数组了!!!!解决问题

 

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。