PHP将数组重写为字符串,
在本例中,例如,PHP将数组重写为字符串,,php,arrays,yii,explode,implode,Php,Arrays,Yii,Explode,Implode,在本例中,例如,我有person\u code=>1,2,3数组中的字符串,然后我想将该字符串更改为person\u nama=>name1,name2,name3数组中的另一个字符串 我已尝试使用我的代码: public function Person_name($person_code) { $code= explode(',', $person_code); $name=array(); for($i=0; $i<count($
我有person\u code=>1,2,3数组中的字符串,然后我想将该字符串更改为person\u nama=>name1,name2,name3数组中的另一个字符串
我已尝试使用我的代码:
public function Person_name($person_code)
{
$code= explode(',', $person_code);
$name=array();
for($i=0; $i<count($code); $i++){
$sql= Yii::app()->db->createCommand('select nm_person from tbl_person where kd_person="'.$code[$i].'";');
$name=$sql->queryRow();
}
$namearray= implode(',',$name);
return $namaarray;
}
公共职能人员姓名($Person\u code)
{
$code=分解(“,”,$person\u code);
$name=array();
对于($i=0;$idb->createCommand('从tbl_person中选择nm_person,其中kd_person=“”。$code[$i]。”;');
$name=$sql->queryRow();
}
$namearray=内爆(“,”,$name);
返回$Namarray;
}
但该结果只返回数组中的最后一个人名,
有人能帮助我吗?谢谢你,< P > >我只是用一个带帮助的解决方案来回答这个问题,通常只是把结果推到数组中。你的当前代码只是重写<代码> $No./Copy>
$name[] = $sql->queryRow();
但是
不要直接在查询字符串中插入变量。只要停止,您已经使用了一个很好的框架和有用的查询生成器
与其对每个id执行每个查询,为什么不在构建器中使用WHERE-IN
子句风格呢
更好的未经测试的基本理念:
public function Person_name($person_code)
{
$persons = array();
$person_code = explode(',', $person_code);
if(!empty($person_code)) {
$result = Yii::app()->db->createCommand()
->setFetchMode(PDO::FETCH_COLUMN, 0)
->select('nm_person')
->from('tbl_person')
->where(array('IN', 'kd_person', $person_code)
->queryAll();
$persons = implode(', ', $result);
}
return $persons;
}
根据读取的您正在覆盖它,
$name[]=
,持续推送,为什么不直接使用WHERE IN
子句呢,我确信Yii
已经在某个地方有了它,使用API,它接受WHERE IN
子句方法,也接受整数数组谢谢你的响应,这是个好主意,我已经尝试了你的代码,但是我认为array Helper.php中有任何错误那是因为我使用Yii 1。xx@YanuarIhsan哦,好吧,这就是为什么,我把它改成了你正在使用的版本,我需要它it@YanuarIhsan真高兴这有帮助