基本 PHP:将数组从一个 PHP 文件传递到另一个 PHP 文件


Basic PHP: Passing An Array From One PHP file to Another

我正在制作一个网站,我希望左侧的列是链接列表。填充链接的列将出现在整个站点的每个网页上,并且会非常频繁地更新更多链接。所以我需要解决的问题是如何做到这一点,以便每当我想向我的网站的"链接列表"添加新链接时,我就不必在每个网页的 HTML 代码中手动添加它。

我知道一些Java,但我完全不熟悉PHP。我做了一些研究,发现了"include"声明,并把一些确实有效的东西放在一起,但我不知道这是否是一个好主意 - 好像它的糟糕代码/糟糕的风格,所以我可以得到一些意见请问?它是好代码吗?还是我走错了路?

包含数组的整个 php 文件,标题为"videos_array.php":

<?php
    $videoArr = array(
    "<li><a href='"http://www.youtube.com/arbitraryvideo1'">Video 1</a></li>",
    "<li><a href='"http://www.youtube.com/arbitraryvideo2'">Video 2</a></li>",
    "<li><a href='"http://www.youtube.com/arbitraryvideo3'">Video 3</a></li>");
?>

我想在其中插入这些值的网页如下所示:

<html>
    <head>
        <!--All the necessary tags-->
    </head>
    <body>
        <!--More Tags-->
        <div id="link_column">
            <?php include 'videos_array.php';
                foreach($videoArr as $val){
                    echo $val;
                }
            ?>
        </div>
    </body>
</html>

当使用 include 声明引用 php 文件时,它是我应该使用的相对路径,还是绝对引用和虚拟引用也可以?

提前感谢您的输入

您的$videoArr只使用一次,因此无需在另一个php file中使用它,您可以在声明后echo

<?php
    $videoArr = array(
       "<li><a href='"http://www.youtube.com/arbitraryvideo1'">Video 1</a></li>",
       "<li><a href='"http://www.youtube.com/arbitraryvideo2'">Video 2</a></li>",
       "<li><a href='"http://www.youtube.com/arbitraryvideo3'">Video 3</a></li>"
    );
     foreach($videoArr as $val){
          echo $val;
     }
?>

如果不使用它,甚至不需要创建array,只需将其用作stringecho就像它一样,

<?php
  echo "<li><a href='"http://www.youtube.com/arbitraryvideo1'">Video 1</a></li>",
       "<li><a href='"http://www.youtube.com/arbitraryvideo2'">Video 2</a></li>",
       "<li><a href='"http://www.youtube.com/arbitraryvideo3'">Video 3</a></li>";
?>

在你的index page使用它,就像,

<div id="link_column">
   <?php include 'videos_array.php';?>
</div>

当使用 include 声明引用 php 文件时,它是我应该使用的相对路径,还是绝对引用和虚拟引用也可以?

你正在做的事情很好,但是围绕PHP的包含路径有一些要点需要警惕。

包含路径是服务器文件系统路径的 FIFO 堆栈,PHP 在解析 includerequire 语句(可能还有其他一些内容)中提供的路径时将用作基目录。基本包含路径通常包括.(或当前工作目录)。这被解析为包含执行的第一个(父)PHP 脚本的目录。一旦你深入几个就可以把人赶出去。

我发现通常最有效的方法是在包含路径前面加上__DIR__常量。这将解析为当前脚本的父目录。

例如,假设您有以下目录结构

foo.php
bar.php
dir/baz.php

要包含来自foo.php bar.php,您可以使用

include __DIR__ . '/bar.php';

包含来自dir/baz.php bar.php

include __DIR__ . '/../bar.php';

您还可以操作include_path配置。例如(foo.php

// add "dir" to the top of the include path stack
set_include_path(implode(PATH_SEPARATOR, [
    realpath(__DIR__ . '/dir'),
    get_include_path()]));
// now include baz.php
include 'baz.php'; // this works because we added "dir" to the include path