PHP使用循环来避免重复代码

时间:2018-05-22 15:02:53

标签: php

我有一个PHP文件,可以执行一些基本的txt文件操作,我对所有HTML页面应用相同的东西,但有一些非常小的差异。我的问题是,是否有办法添加一些循环或其他解决方案来解决所有这些重复的代码:

     if(isset($_POST['submit'])){


                $second_page_array = file("data/data1.txt",FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
                $final_array = [];

                //some shortening of the code
                foreach($first_page_array as $key=>$first_page){
                   $final_array[] = $first_page.''.$second_page_array[$key].''.$ranks_array[$key].''.$time_array[$key]."\n";
                }

                file_put_contents('output.txt',$final_array, FILE_APPEND | LOCK_EX);

                header("Location: main2.html");
              }

     if(isset($_POST['submit2'])){


                $second_page_array = file("data/data2.txt",FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
                $final_array = [];

                //some shortening of the code
                foreach($first_page_array as $key=>$first_page){
                   $final_array[] = $first_page.''.$second_page_array[$key].''.$ranks_array[$key].''.$time_array[$key]."\n";
                }

                file_put_contents('output.txt',$final_array, FILE_APPEND | LOCK_EX);

                header("Location: main3.html");
              }

    if(isset($_POST['submit3'])){


            $second_page_array = file("data/data3.txt",FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
            $final_array = [];

            //some shortening of the code
            foreach($first_page_array as $key=>$first_page){
               $final_array[] = $first_page.''.$second_page_array[$key].''.$ranks_array[$key].''.$time_array[$key]."\n";
            }

            file_put_contents('output.txt',$final_array, FILE_APPEND | LOCK_EX);

            header("Location: main4.html");
          }

因此,改变的是提交增加,data.txt和重定向到另一个页面。

提前谢谢!

3 个答案:

答案 0 :(得分:1)

重复代码中唯一的变化是一个数字。只需在提交的值中添加一个数字,然后使用该数字进行修改:

if (isset($_POST['submit'])) {
    $num = $_POST['submit'];
    $location = 'main'.$num+1.'.html';


    $second_page_array = file("data/data$num.txt",FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
    $final_array = [];

    //some shortening of the code
    foreach($first_page_array as $key=>$first_page){
       $final_array[] = $first_page.''.$second_page_array[$key].''.$ranks_array[$key].''.$time_array[$key]."\n";
    }

    file_put_contents('output.txt',$final_array, FILE_APPEND | LOCK_EX);

    header("Location: $location");
  }
}

答案 1 :(得分:0)

您可以将以下逻辑保留在函数中,并在提交特定页面时使用某些参数调用该函数

function callPage()
{
    $second_page_array = file("data/data3.txt",FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
        $final_array = [];

        //some shortening of the code
        foreach($first_page_array as $key=>$first_page){
           $final_array[] = $first_page.''.$second_page_array[$key].''.$ranks_array[$key].''.$time_array[$key]."\n";
        }

        file_put_contents('output.txt',$final_array, FILE_APPEND | LOCK_EX);

        header("Location: main4.html");
}

//Example:
if($_POST[submit1])
{
  echo callPage(1);
}

答案 2 :(得分:0)

你可以创建一个函数和switch case,并根据case值传递函数数据。

$submit = $_POST[submitvalue];
switch($submit){
    case 'submit':
         $file = data.txt;
         $headerLocation: file.html;
         functionName($file,$file);
         break;
    case 'submit1':
         $file = data1.txt;
         $headerLocation: file1.html;
         functionName($file,$file);
         break;
}

functionName(arg1,arg2){
    // do yours stuff here
}