在foreach循环中在php中创建动态关联数组

时间:2016-08-12 06:44:10

标签: php arrays

我有这样的循环

foreach($this->input->post('users') as $value)
        {
            foreach($this->input->post('group_name') as $v)
            {
                echo $value.','.$v.'<br>';

            }
        }

它的输出是

17,5
17,6
18,5
18,6
19,5
19,6
20,5
20,6

现在我想使用上面的值创建一个这样的关联数组。

array(
        array(
                'user_id' => 17,
                'group_id' => 15
        ),
       ....
       ....
      array(
                'user_id' => 20,
                'group_id' => 6
        )

)

我该怎么做? 我在foreach循环中尝试了这个,但它会打印两个独立的数组。

            $temp['user_id'][]=$v;
            $temp['group_id'][]=$value;

4 个答案:

答案 0 :(得分:3)

您所要做的就是为数组添加各自的值。

$result = [];
foreach($this->input->post('users') as $value)
{
        foreach($this->input->post('group_name') as $v)
        {
                $result[] = ['user_id' => $value, 'group_id' => $v];
        }
}
var_dump($result);

答案 1 :(得分:1)

这个循环可以帮助你。

$resultArray = [];
foreach($this->input->post('users') as $value) {
    foreach($this->input->post('group_name') as $v) {
        $resultArray[] = array(
            'user_id' => $value,
            'group_id' => $v,
        );
    }
}

var_dump($resultArray);

答案 2 :(得分:0)

这非常简单,您只需将子数组追加/推入主数组。

喜欢这样,

$main_array=array();
foreach($this->input->post('users') as $value)
        {
            foreach($this->input->post('group_name') as $v)
            {
                $group_array=array();
                $group_array["group_id"]=$v;
                $group_array["user_id"]=$value;
                $main_array[]=$group_array;
                //echo $value.','.$v.'<br>';
            }
        }
print_r($group_array);

您也可以使用array_push()将子数组推送到主数组中。

语法将是,

array_push($main_array, $child_array);

答案 3 :(得分:0)

你能试试吗

$temp = array();
foreach($this->input->post('users') as $key=>$value)
    {
        foreach($this->input->post('group_name') as $v)
        {
            $temp[$key]['user_id']=$v;

            $temp[$key]['group_id']=$value;

        }
    }

print_r($temp);