2017.7.25

1、PHP包含/引用文件

服务器端包含 (SSI) 用于创建可在多个页面重复使用的函数、页眉、页脚或元素。

include (或 require)语句会获取指定文件中存在的所有文本/代码/标记,并复制到使用 include或 require 语句的文件中

PHP include 和 require 语句

通过 include 或 require 语句,可以将 PHP 文件的内容插入另一个 PHP 文件(在服务器执行它之前)。

include 和 require 语句是相同的,除了错误处理方面:

  • require 会生成致命错误(E_COMPILE_ERROR)并停止脚本;当文件被应用程序请求时。
  • include 只生成警告(E_WARNING),并且脚本会继续执行;当文件不是必需的,且应用程序在文件未找到时应该继续运行时。

因此,如果您希望继续执行,并向用户输出结果,即使包含文件已丢失,那么请使用 include

否则,在框架、CMS 或者复杂的 PHP 应用程序编程中,请始终使用 require 向执行流引用关键文件。这有助于提高应用程序的安全性和完整性,在某个关键文件意外丢失的情况下。

包含文件省去了大量的工作。这意味着您可以为所有页面创建标准页头、页脚或者菜单文件。然后,在页头需要更新时,您只需更新这个页头包含文件即可。

语法:include 'filename'; 或 require 'filename';

 

语法:include_once 'filename'; 或 require_once 'filename';//加上once不会重复引用

 

例子 

假设我们有一个名为 "vars.php" 的文件,其中定义了一些变量:

<?php
$color='银色的';
$car='奔驰轿车';
?>

然后,如果我们引用这个 "vars.php" 文件,就可以在调用文件中使用这些变量:

<?php
include 'vars.php';//引用路径为相对路径:如果在同一个文件夹下,则可直接引用,如本例
echo "我有一辆" . $color . $car "。";
?>

 

2、PHP文件处理


fopen() 函数用于在 PHP 中打开文件。注释:如果 fopen() 函数无法打开指定文件,则返回 0 (false)


打开文件

fopen() 函数用于在 PHP 中打开文件。

此函数的第一个参数含有要打开的文件的名称,第二个参数规定了使用哪种模式来打开文件:

<html>
<body>

<?php
$file=fopen("welcome.txt","r");//文件名,打开模式
?>

</body>
</html>

 

文件可能通过下列模式来打开:#+带有加号表示,同时拥有了读写功能

模式描述
r 只读。在文件的开头开始。
r+ 读/写。在文件的开头开始。
w 只写。打开并清空文件的内容;如果文件不存在,则创建新文件。
w+ 读/写。打开并清空文件的内容;如果文件不存在,则创建新文件。
a 追加。打开并向文件末尾进行写操作,如果文件不存在,则创建新文件。
a+ 读/追加。通过向文件末尾写内容,来保持文件内容。
x 只写。创建新文件。如果文件已存在,则返回 FALSE 和一个错误。
x+ 读/写。创建新文件。如果文件已存在,则返回 FALSE 和一个错误。

 

实例

如果 fopen() 函数不能打开指定的文件,下面的实例会生成一段消息:

<html>
<body>

<?php
$file=fopen("welcome.txt","r") or die("Unable to open file!");//输出引号中的话后会退出此文件
?></body>
</html>

 


关闭文件

fclose() 函数用于关闭打开的文件:

<?php
$file = fopen("test.txt","r");

//执行一些代码

fclose($file);
?>

检测文件末尾(EOF)

feof() 函数检测是否已到达文件末尾(EOF)。

在循环遍历未知长度的数据时,feof() 函数很有用。

注释:在 w 、a 和 x 模式下,您无法读取打开的文件!

if (feof($file)) echo "文件结尾";

 


逐行读取文件

fgets() 函数用于从文件中逐行读取文件。

注释:在调用该函数之后,文件指针会移动到下一行。

实例

下面的实例逐行读取文件,直到文件末尾为止:

<?php
$file = fopen("welcome.txt", "r") or exit("无法打开文件!");
// 读取文件每一行,直到文件结尾
while(!feof($file))//如果没有到达文件末尾,进入循环
{
    echo fgets($file). "<br>";
}
fclose($file);
?>

 


逐字符读取文件

fgetc() 函数用于从文件中逐字符地读取文件。

注释:在调用该函数之后,文件指针会移动到下一个字符。

实例

下面的实例逐字符地读取文件,直到文件末尾为止:

<?php
$file=fopen("welcome.txt","r") or exit("无法打开文件!");
while (!feof($file))
{
    echo fgetc($file);
}
fclose($file);
?>

小计一笔:可以从数据库的多个个表中读取数据,通过array_merge()函数 把获得的数组类型的数据进行合并,使之成为一个数组,进行后续其他处理,重命名......。

if($_SESSION["account"]==$v)//通过访问2次数据库,并且合并所得数据,一次json返回
        {  /**/
            //首先保证赛事编码是唯一的
            $sql = selectFrom1($mysqli,$sql,"s",$_GET["eventId"]);//owner_user
            $sql = "select marathon_name,eventId,year,bib_format from marathon_info where eventId = ?";
            $stmt = $mysqli->prepare($sql);
            $stmt->bind_param("s",$_GET["eventId"]);//修改$_POST["eventId"]
            $stmt->execute();
            $result_events = $stmt->get_result();
            //获取所有数据
            $data_events = $result_events->fetch_all(MYSQLI_ASSOC);
            // echo '<hr />';
            // var_dump($data_events);


# 3.根据请求字段,查询数据库
            $sql = "SELECT account FROM racepower_user_info.photographer_accounts
                      where belongToUser = ?";//表名,字段改变
            $data = selectFrom1($mysqli,$sql,"s",$_SESSION["account"]);//数据库,语句,类型,变量

            //修改合并两个数据库的数据
            $result=(array_merge($data_events,$data));//
            $cd=count($result);

           /**/ for($i=0;$i<$cd;$i++)
            {
                if($result[$i][account])
                    $result[$i][allow_photographer]=$result[$i][account];
                    unset($result[$i][account]);

            }
           // var_dump($result);
           // echo '<hr />';
            $jsonString = json_encode($result);
            echo "{\"events\":".$jsonString."}";

 

整合自W3school和菜鸟教程。

 

posted @ 2017-07-25 20:13  杨阳01  阅读(123)  评论(0编辑  收藏  举报