【问题标题】:Multiple array combine多阵列组合
【发布时间】:2016-10-03 18:03:29
【问题描述】:

我有一个工作更新,来自多个条目:

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());
}

上面的代码来自选定的一个或多个学生,具体取决于选中的复选框。有没有办法用清洁器foreach 来做到这一点,比如将$sn$fn$m 合二为一?

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

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

【问题讨论】:

    标签: php arrays foreach


    【解决方案1】:

    假设它们的键控相同:

    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() 以重新索引。

    【讨论】:

    • 同键含义,相同数量的数组?
    • 是的,相同数量的元素与数组键匹配。
    • 是的,谢谢.. 因为上面的代码来自我以前的代码,在 $prof 上太长且多余
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-23
    • 2012-02-25
    • 2017-05-03
    • 2022-10-24
    • 1970-01-01
    • 2018-05-31
    相关资源
    最近更新 更多