Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/285.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_Forms - Fatal编程技术网

Php 从数组中收集数据并排序

Php 从数组中收集数据并排序,php,arrays,forms,Php,Arrays,Forms,以下输入字段的四个实例: <input type='text' name='sel_id[]' size='1'/>Select Sequence <input type='checkbox' name='id[]' value='$STH->repair_id'/>Repair ID:$STH->repair_id 与使用方括号[]来排列多个实例中的sel_id和id字段不同,是否可以以某种方式将每个字段分组收集为: Array([sel_id] =&g

以下输入字段的四个实例:

<input type='text' name='sel_id[]' size='1'/>Select Sequence 
<input type='checkbox' name='id[]' value='$STH->repair_id'/>Repair ID:$STH->repair_id
与使用方括号[]来排列多个实例中的sel_id和id字段不同,是否可以以某种方式将每个字段分组收集为:

Array([sel_id] => 4
          [id] => 1) 
几天来,我一直在努力使用usort按sel_id值对上述数组进行排序,但我想也许有更好的方法从表单中收集数据

完整的表格在这里,可以从数据库中重复多次: 我想在下一次提交时使用第一个输入$int来重新排列分组的$STH->对象的顺序

$STH = DB::getInstance()->query('SELECT distinct part_nomenclature FROM repairs');
foreach($STH->results() as $STH){
    $des = nl2br($STH->description); 
    $des =  htmlspecialchars_decode($STH->description,ENT_HTML5 | ENT_QUOTES);   

echo "<div class='leg'>
<input type='text' name='sel_id[]' size='1'/>Select Sequence 
<input type='checkbox' name='id[]' value='$STH->repair_id'/>Repair ID:$STH->repair_id
Part Nomenclature: <input type='text' size='35' value='$STH->part_nomenclature' readonly/>
Repair Name:<input type='text' size='20' value='$STH->name'/><br />
Location: <input type='text' size='20' value='$STH->location'/>
Description: <textarea rows='5' cols='100' id='text'>$des</textarea>
</div>"; 
echo "<input type='submit' value='Submit'/>"; 

我需要更多信息来建议更好的表单方法,但要基于sel_id进行排序,id数组将根据以下内容进行排序:

array_multisort($_POST['sel_id'], $_POST['id']);
另一种方法可能是:

$array = array_combine($_POST['sel_id'], $_POST['id']);
现在您将sel_id作为键,id作为值,并且可以使用ksort和/或asort

要成对收集,需要指定索引,如:

name="data[0][sel_id]"
name="data[0][id]"
name="data[1][sel_id]"
name="data[1][id]"
试试这个:


您的表单必须有多于这两个的输入。你能发布更多的表单,让我们看看它是如何构造的吗?从外观上看,您当前的代码实际上应该会产生您想要的结果。哦,等等,我明白了-您希望将它们分组为对,而不是将sel_id和id作为子数组?正确,分组为对将是理想的,然后允许按usort进行排序更容易。只是根据您的编辑添加了一个新选项。array_multisort$\u POST['sel_id',$\u POST][id];工作得很好。
name="data[0][sel_id]"
name="data[0][id]"
name="data[1][sel_id]"
name="data[1][id]"
$_POST['sel_id']=sort($_POST['sel_id']);
$_POST['id']=sort($_POST['id']);
$na=array();
if(count($_POST['id'])>)foreach($_POST['id'] as $k=>$v){
    $na[$k]['sel_id']=$_POST['sel_id'][$k];
    $na[$k]['id']=$_POST['id'][$k];
}
var_dump($na);