implode数组比较,尝试好多次一直失败,太沮丧了,帮帮我,谢啦

1.问题遇到的现象和发生背景
新建一个数组
$arrCatNavs = db_factory::get_table_data ( '*', 'data_task', " uid = '$gUid' and service_status='2'", 'service_id asc', '', '', 'cat',3600 );
$arrCats = array_keys($arrCatNavs);
$cat_string = implode ( ',', $arrCats );

2.问题相关代码,请勿粘贴截图
比较 a.giftname中数据是否在数组$cat_string中
$strWhere .= " and a.giftname in(.'$cat_string'.)";

3.运行结果及报错内容
执行结果为空,问题在此行括号内,数据格式不对,需要完善

4.我的解答思路和尝试过的方法
$strWhere .= " and a.giftname in('$cat_string')"; //返回空值
$strWhere .= " and a.giftname in ('.cat_string.') " ; //返回空值
$strWhere .= " and a.giftname in ('6-0','7-0-1' ) " ; //正确,是我想要的样子,但是我做不出来,希望高手朋友指点一下,感谢!!!


$strWhere .= " and a.giftname in('" + $cat_string + "')";

implode时应该组成SQL字符串的形式,直接逗号那么就变算式了,题主对比下下面的代码输出就清楚了

img


$arrCats = array('6-0','7-0-1' );

$cat_string = implode( ",", $arrCats);////////////错误的组合
$strWhere = " and a.giftname in($cat_string)"; 
echo $strWhere.'<br>';

$cat_string ="'". implode( "','", $arrCats)."'";//////////////////////////////正确组合
$strWhere = " and a.giftname in($cat_string)";
echo $strWhere;

img