根据变量的值包含一个 php 页面

include a php page based upon the value of a variable

我创建了一个函数,该函数接受当前页面 ID,并根据该结果显示两个 .php 文件或仅显示一个 .php 文件。

以下是我写的。我是否以正确的方式处理了这个问题?

<?php
function get_search_or_nav($page_id) {

    if(isset($page_id)) {

       $id = $page_id;
       $pages = array('home', 'thank-you');

       foreach($pages as $page){

          if($page==$id)
            $match = true;
       }
       if($match) {
          include("dir/file_1.php"); 
          include("dir/file_2.php"); 
       } 
       elseif (!$match) {
          include("dir/file_1.php");
       } 
   }
}
?>

$pages 变量保存 $page_id 数组,即 $pages = array('home', 'thank-you');

每个 .php 文件都有一个 $page_idindex.php$page_id = "home";

该数组是匹配 $page_id 的列表:

$pages = array('home', 'thank-you');

调用将是:

get_search_or_nav($page_id);

如有任何帮助或建议,我们将不胜感激。

我只会这样做:

$id = $page_id;
$pages = array('home', 'thank-you');

$match = in_array($id, $pages);

不需要迭代

不需要 foreach 循环。 PHP 具有内置函数来处理您想要的 (in_array()):我会将您的函数更改为如下内容:

function get_search_or_nav($page_id) {

    if (isset($page_id)) {

        $id = $page_id;
        $pages = array('home', 'thank-you');

        // make sure file is in allowed array (meaning it exists)
        if(in_array(id, $pages)) {
            include("dir/file_1.php");
            include("dir/file_2.php");
            return true;
        } 
        // no match, so include the other file
        include("dir/file_1.php");
        return false;
    }
}

您可以通过以下方式实现您的功能:

function get_search_or_nav($page_id) {

    if(isset($page_id)) {

       $pages = array('home', 'thank-you');

       // You could do this with for loop
       // but PHP offers in_array function that checks
       // if the given value exists in an array or not
       // if found returns true else false
       $match = in_array($page_id, $pages);


       // you are including this in either case
       // so no need to repeat it twice in both conditions
       include("dir/file_1.php");  

       // if match include file 2
       if ($match) {
           include("dir/file_2.php");
       }
    }

    // you might want to throw Exception or log error here
    // or just redirect to some 404 page or whatever is your requirement
}

in_array reference