在php中基于数组元素填充

时间:2012-10-22 10:37:47

标签: php arrays codeigniter

这是我的代码。

        if(in_array("1", $mod)){ 
        $res=array('First Name','Insertion','Last Name','Lead Country');}

       if(in_array("2", $mod)){ 
        $res=array('Landline No:','Mobile No:','Lead Country');}

        if(in_array("3", $mod)){ 
        $res=array('City','State','Country','Lead Country');}

        if(in_array("4", $mod)){ 
        $res=array('Email','Lead Country');}

        return $res;

到此为止它工作正常。但如果数组包含多个值,则说(1,3) 我需要返回1和3的结果。

例如:如果数组是这样的

    array([0]=>1 [1]=>3)

然后

    $res=array('First Name','Insertion','Last Name','City','State','Country','Lead Country') 

但如果有2个领先国家,则只应显示一个如何做到这一点? 请帮助我。

3 个答案:

答案 0 :(得分:1)

使用array_merge

$res = array();
if(in_array("1", $mod)){
    $res=array_merge($res, array('First Name','Insertion','Last Name','Lead Country'));
}

// and so on ...

return $res;

答案 1 :(得分:1)

使用array_merge构建结果......

    $res = array();

    if(in_array("1", $mod)) { 
        $res = array_merge($res, array('First Name','Insertion','Last Name','Lead Country'));
    }

    // etc

答案 2 :(得分:1)

这是一个使用函数添加元素的示例,只有它们不存在时才会使用:

    function addItems($items, $arr)
    {
        foreach($items as $value)
        {
            if(!in_array($value, $arr))
            {
                $arr[] = $value;
            }
        }

        return $arr;
    }

    $res = array();

    if(in_array("1", $mod)){ 
    $res = addItems(array('First Name','Insertion','Last Name','Lead Country'), $res);}

    if(in_array("2", $mod)){ 
    $res = addItems(array('Landline No:','Mobile No:','Lead Country'), $res);}

    if(in_array("3", $mod)){ 
    $res = addItems(array('City','State','Country','Lead Country'), $res);}

    if(in_array("4", $mod)){ 
    $res = addItems(array('Email','Lead Country'), $res);}

    return $res;

这是另一种方法,它是更多的OOP,可能更合乎逻辑,因为它不会继续传递整个数组,而是使用一个保存数组的对象,并有一个方法来添加它,并获得最终结果:

    class ItemsManager
    {
        protected $items = array();

        public function addItems($items)
        {
            foreach($items as $value)
            {
                if(!in_array($value, $this->items))
                {
                    $this->items[] = $value;
                }
            }
        }

        public function getItems()
        {
            return $this->items;
        }
    }

    $im = new ItemsManager();

    if(in_array("1", $mod)){ 
    $im->addItems(array('First Name','Insertion','Last Name','Lead Country'));}

    if(in_array("2", $mod)){ 
    $im->addItems(array('Landline No:','Mobile No:','Lead Country'));}

    if(in_array("3", $mod)){ 
    $im->addItems(array('City','State','Country','Lead Country'));}

    if(in_array("4", $mod)){ 
    $im->addItems(array('Email','Lead Country'));}

    return $im->getItems();