2016-10-03 83 views
1

我有一个工作更新,从多条目:多阵列结合

foreach(array_combine($_POST['eprof'] , $_POST['estudno']) as $prof => $sn){ 
    mysqli_query($con,"UPDATE `table` SET `studno` = '$sn' WHERE `students`.`id` = '$prof'") or die(mysqli_error());          
} 
foreach(array_combine($_POST['eprof'] , $_POST['efn']) as $prof => $f){ 
    mysqli_query($con,"UPDATE `table` SET `fn` = '$f' WHERE `students`.`id` = '$prof'") or die(mysqli_error()); 
} 
foreach(array_combine($_POST['eprof'] , $_POST['emn']) as $prof => $m){ 
    mysqli_query($con,"UPDATE `table` SET `mn` ='$m' WHERE `students`.`id` = '$prof'") or die(mysqli_error()); 
} 

上面的代码选自学生/ s的一个或多个依赖于选中复选框。有没有办法做到这一点与清洁foreach,如结合$sn$fn$m在一个?

foreach(
    array_combine(
     $_POST['eprof'] , 
     $_POST['estudno'], 
     $_POST['efn'], 
     $_POST['emn'] 
    ) as 
    $prof => $sn => $f => $m 
){ "query here" } 

这是正确的还是我做错了?

回答

0

假设它们是相同的键:

foreach($_POST['eprof'] as $key => $prof){ 
    $sn = $_POST['estudno'][$key]; 
    $f = $_POST['efn'][$key]; 
    $m = $_POST['emn'][$key]; 

    mysqli_query($con, "UPDATE `table` SET `studno` = '$sn', `fn` = '$f', `mn` ='$m' 
         WHERE `students`.`id` = '$prof'"); 
} 

如果没有相同的键,那么你可以运行在3个阵列array_values()首先重新建立索引。

+0

相同的键控含义,相同数量的数组? – KID

+0

是的,数组键匹配的元素数量相同。 – AbraCadaver

+0

是的,他们是,谢谢..因为上面的代码是从我以前的这是太长和冗余$ prof – KID