按另一个数组对数组进行分组


Group Arrays By Another Array?

我正在尝试按另一个数组对一个数组进行排序。这两个数组都从表单中获取其内容。

这是我的表单代码:

<form method="post" action="">
<div class="groupcontainer">
<br/><label>Group One:</label><br/>
<input type="text" name="groupname[]" value="groupone" /><br/>
<br/><label>Variable Group One:</label><br/>
<input type="text" name="variable[]" value="variableone" />
<input type="text" name="variable[]" value="variabletwo" />
</div>
<br/>
<div class="groupcontainer">
<br/><label>Group Two:</label><br/>
<input type="text" name="groupname[]" value="grouptwo" /><br/>
<br/><label>Variable Group Two:</label><br/>
<input type="text" name="variable[]" value="variablethree" />
<input type="text" name="variable[]" value="variablefour" />
</div>
<br/>
<input type="submit" name="submit" value="Submit" />
</form>

这是PHP代码:

<?php
if (!$_POST['submit'] == "") {
    foreach($_POST['groupname'] as $groupname) {
        $groupnum = 1;
        foreach($_POST['variable'] as $variable) {  
            print "$".$groupname.$groupnum." = '".$variable."';<br/>";
            $groupnum++;
        }
        print "$".$groupname." = array(";
        for ($arrnum = 1; $arrnum <= count($_POST['variable']); $arrnum++) {
            print "$".$groupname.$arrnum.", ";
        }
        print ");<br/><br/>";
    }
}
?>

这是我提交表单时得到的结果:

$groupone1 = '$variableone';
$groupone2 = '$variabletwo';
$groupone3 = '$variablethree';
$groupone4 = '$variablefour';
$groupone = array($groupone1, $groupone2, $groupone3, $groupone4, )
$grouptwo1 = '$variableone';
$grouptwo2 = '$variabletwo';
$grouptwo3 = '$variablethree';
$grouptwo4 = '$variablefour';
$grouptwo = array($grouptwo1, $grouptwo2, $grouptwo3, $grouptwo4, )

这是我真正想要的结果:

$groupone1 = '$variableone';
$groupone2 = '$variabletwo';
$groupone = array($groupone1, $groupone2)
$grouptwo1 = '$variablethree';
$grouptwo2 = '$variablefour';
$grouptwo = array($grouptwo1, $grouptwo2)

整个事情需要动态,因为我想添加任意数量的组和变量。

几天来我一直在寻找答案,已经问了两个不知道答案的人。也许你们可以帮忙。谢谢!

更新:

只是澄清几点:

  1. 所以基本上我希望能够添加任意数量的输入表单(我使用 jQuery)来创建任意数量的组和变量,例如这样:

    $groupwuteva 1 = '你好';$groupwuteva 2 = '再见':

    $randomname 1 = "绿色";$randomname 2 = '蓝色';$randomname 3 = '红色';

    $blabla 1 = 'abc';$blabla 2 = 'xyz';$blabla 3 = '123';$blabla 4 = 'bla';

  2. 无论我使用什么作为组名,都将在数组 1 中使用,例如,我称一个组为"颜色",我放入该组表单中的变量是"蓝色"、"红色"和"绿色"。然后我会得到这个代码:

    $colors 1 = '绿色';$colors 2 = '蓝色';$colors 3 = "红色";

我希望这能解决一些问题。并感谢到目前为止的所有回复!

您可以将组名作为容器,以在其中存储所有关联的变量值。稍后,使用变量和implode()函数来处理您的 html 表单。

.HTML

<form method="post" action="">
<div class="groupcontainer">
<br/><label>Groupe One:</label><br/>
<input type="text" name="groupname[]" value="groupone" /><br/>
<br/><label>Variable Group One:</label><br/>
<input type="text" name="groupone[]" value="variableone" />
<input type="text" name="groupone[]" value="variabletwo" />
</div>
<br/>
<div class="groupcontainer">
<br/><label>Groupe Two:</label><br/>
<input type="text" name="groupname[]" value="grouptwo" /><br/>
<br/><label>Variable Group One:</label><br/>
<input type="text" name="grouptwo[]" value="variablethree" />
<input type="text" name="grouptwo[]" value="variablefour" />
</div>
<br/>
<input type="submit" name="submit" value="Submit" />
</form>

.PHP

if(isset($_POST['submit'])){
    foreach($_POST['groupname'] as $value){
        $arr = array();
        $i = 1;
        foreach($_POST[$value] as $v){
            $var = $value . $i;
            $$var = $v;
            echo $var . " = " . $$var . "<br />";
            $arr[] = $$var;
            ++$i;
        }
        $output = $value . " = array(" . implode(",", $arr) . ")";
        echo $output . "<br /><br />";
    }
}

输出:

groupone1 = variableone
groupone2 = variabletwo
groupone = array(variableone,variabletwo)
grouptwo1 = variablethree
grouptwo2 = variablefour
grouptwo = array(variablethree,variablefour)

试试这个形式:

<form method="post" action="">
    <?php foreach(array('groupone', 'grouptwo') as $num):?>
        <div class="groupcontainer">
            <br/><label>Groupe <?php echo $num;?>:</label><br/>
            <input type="text" name="groupname[]" value="<?php echo $num;?>" /><br/>
            <br/><label>Variable Group <?php echo $num;?>:</label><br/>
            <input type="text" name="variable[<?php echo $num;?>][]" value="<?php echo uniqid();?>" />
            <input type="text" name="variable[<?php echo $num;?>][]" value="<?php echo uniqid();?>" />
        </div>
        <br/>
    <?php endforeach;?>
    <input type="submit" name="submit" value="Submit" />
</form>

和代码:

if ($_POST) {
    foreach($_POST['groupname'] as $groupname) {
        $$groupname = array();
        foreach($_POST['variable'][$groupname] as $variable) {
            ${$groupname}[] = $variable;
        }
    }
    var_dump($groupone);
    var_dump($grouptwo);
}