我正在尝试使用<select><option>
转换页面,我在其中获取name=""
和value=""
以获取值。这些数据将被传输到一个数组:
<select name="example">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
会给:
array(array('example' => 1),
array('example' => 2),
array('example' => 3))
但是,在我的情况下可能有多个<select>
,所以我需要一些逻辑来获取这些值并在该数组中创建所有可能的组合。我希望将这些作为一个包含4个数组的数组,其中包含2个相同的键,但值不同:
<select name="example">
<option value="1">1</option>
<option value="2">2</option>
</select>
<select name="second">
<option value="1">1</option>
<option value="2">2</option>
</select>
会变成:
array(array('example' => 1,
'second' => 1),
array('example' => 1,
'second' => 2),
array('example' => 2,
'second' => 1),
array('example' => 2,
'second' => 2))
php中哪种方法更适合创建这些数组?我能想到的只有几个循环。我希望这个解决方案具有可扩展性,并尽可能多地使用<select>
。
答案 0 :(得分:0)
为什么不直接组合这样的键?
$buildqueryarray=array();
$buildqueryarray[]=$_POST['example1'];
$buildqueryarray[]=$_POST['example2'];
$buildqueryarray[]=$_POST['example3'];
$buildqueryarray[]=$_POST['example4'];
$query="";
foreach($buildqueryarray as $k=>$v){
$query=$k."=".$v."&";
}
$query=substr($query,0,-1);
然后,您最终会根据给定的$ _POST请求构建查询。你只需要将这些添加到buildqueryarray,因为我不知道哪些$ _POST字段存在
答案 1 :(得分:0)
最简单的做法是将example
更改为example[]
,将second
更改为second[]
。到那里,你可以这样做:
$array = array();
$select1 = $_POST['example'];
$select2 = $_POST['second'];
array_push($array, ["example" => $select1[0], "second" => $select2[0]]);
array_push($array, ["example" => $select1[1], "second" => $select2[0]]);
array_push($array, ["example" => $select1[0], "second" => $select2[1]]);
array_push($array, ["example" => $select1[1], "second" => $select2[1]]);
数组$array
现在将包含您想要的内容。
要获得实际组合,您可以使用Math_Combinatorics类,如以下链接所示:
http://pyrus.sourceforge.net/Math_Combinatorics.html
你会做这样的事情:
$combinatorics = new Math_Combinatorics;
$a = $combinatorics->combinations(array(
"example" => 2,
"second" => 2,
), 2);
$a
现在将包含x个数组,每个数组包含您输入的任何数字的唯一两个数字组合。然后,您可以将它们用于索引。只需包含该数组的索引代替我在硬编码的版本中输入的0和1。