Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP将数组重写为字符串,_Php_Arrays_Yii_Explode_Implode - Fatal编程技术网

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真高兴这有帮助