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

Posted

技术标签:

【中文标题】基本 PHP:将数组从一个 PHP 文件传递​​到另一个【英文标题】:Basic PHP: Passing An Array From One PHP file to Another 【发布时间】:2013-11-10 23:24:20 【问题描述】:

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

我知道一些Java,但我完全不熟悉php。我做了一些研究,发现了“包含”声明,并且将一些确实有效的东西拼凑在一起,但我不知道这是否是一个好主意 - 好像它的代码不好/风格不好,所以可以请问我对此有什么意见?是好代码吗?还是我走错了路?

包含数组的整个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>

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

提前感谢您的意见

【问题讨论】:

没有任何列表可能会出现对齐问题。在 inculde 之前添加 ui/ol 【参考方案1】:

您的$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就不需要创建echo,就像string一样,

<?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>

【讨论】:

【参考方案2】:

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

你所做的很好,但是 PHP 的 include 路径有一些需要注意的地方。

包含路径是服务器文件系统路径的 FIFO 堆栈,在解析 includerequire 语句(可能还有其他一些东西)中提供的路径时,PHP 将用作基本目录。基本包含路径通常包括.(或当前工作目录)。这被解析为包含执行的第一个(父)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

【讨论】:

以上是关于基本 PHP:将数组从一个 PHP 文件传递​​到另一个的主要内容,如果未能解决你的问题,请参考以下文章