# 2016年2月22日

## php

**文件头声明**

```
header("content-type:text/html;charset=utf-8");
```

### 函数

**自定义函数**

```php
//从1打印到5
function echoNum(){
    for($i=1;$i<=5;$i++){
        echo $i."<br/";
    }
}

echoNum();

function demo(){
    return 11;
}

$n=demo();//不会打印，可以给变量赋值。
echo $n;
```

**递归函数**

自己调用自己； 递归函数必须有终止的情况。 常用在php可以删除目录

```php
function sum($n){
    if($n==1){
        return 1;
    }else{
        return $n+sum($n-1);
    }
}

$m=sum(5);
/*
*$m=sum(5);
*   return 5+sum(4);
*       return4+sum(3);
*           return3+sum(2);
*               return2+sum(1);
*                   return 1;
 */
```

**变量的引用传值** 引用传值：php允许多个变量指向一个内存空间。 引用传值：传递内容；

```php
$a=3;
$b=$a;
$a=4;
echo $b;//3,值传递，传递内容

---

$a=3;
$b=&$a;//引用传值符号,将地址传递$b;
$a=4;
echo $b;//4
```

### 文件函数库

php可以用来操作文件；

* fopen(string $filename,string $mode)

**打开方式**

| mode | 说明                                                                                                                                           |
| ---- | -------------------------------------------------------------------------------------------------------------------------------------------- |
| 'r'  | 只读方式打开，将文件指针指向文件头。                                                                                                                           |
| 'r+' | 读写方式打开，将文件指针指向文件头。                                                                                                                           |
| 'w'  | 写入方式打开，将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。                                                                                                    |
| 'w+' | 读写方式打开，将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。                                                                                                    |
| 'a'  | 写入方式打开，将文件指针指向文件末尾。如果文件不存在则尝试创建之。                                                                                                            |
| 'a+' | 读写方式打开，将文件指针指向文件末尾。如果文件不存在则尝试创建之。                                                                                                            |
| 'x'  | 创建并以写入方式打开，将文件指针指向文件头。如果文件已存在，则 fopen() 调用失败并返回 FALSE，并生成一条 E\_WARNING 级别的错误信息。如果文件不存在则尝试创建之。这和给 底层的 open(2) 系统调用指定 O\_EXCL或O\_CREAT 标记是等价的。 |

* int fwrite ( resource $handle , string $string \[, int $length ] )

```php
$fileName="pph.txt";
$handle=fopen($fileName,"w+");
fwrite($handle,"feniaf");
fclose($handle);
```

* bool fclose ( resource $handle )

fclose — 关闭一个已打开的文件指针

* string fread ( resource $handle , int $length )

fread — 读取文件（可安全用于二进制文件）

* int filesize ( string $filename )

filesize — 取得文件大小

```php
$fileName="a.txt";
$handle=fopen($fileName,"a+");
$num=filesize($fileName);
$str=fread($handle,$num);
echo $str;
fclose($handle);
```

**序列化数据**

序列化以后的数据，可以放进文件中，方便其他文件的读取与调用。

* string serialize ( mixed $value )

产生一个可存储的值的表示

```php
$st="ab";
echo serialize($st)."<br/>";
//s:2:"ab";类型：长度：值

$st1=22;
echo serialize($st1)."<br/>";
//i:22;类型：值

$st2=3.14;
echo serialize($st2)."<br/>";
//d:3.1400000000000001;类型：近似值

$st3=true;
echo serialize($st3)."<br/>";
//b:1;类型：1,0表示的值

$st4=array(123,"fdf","df");
echo serialize($st4)."<br/>";
//a（类型）:3(长度）:{i（下标类型）:0（下标值）;i:123;i:1;s:3:"fdf";i:2;s:2:"df";}；
```

* mixed unserialize ( string $str )

对单一的已序列化的变量进行操作，将其转换回 PHP 的值。

**文件包含**

* include(被包含文件的URL)
* include\_once(被包含文件的URL)//只包含一次

如果被包含文件找不到，提示的错误是一个警告，后面的代码继续执行。

* require(被包含文件URL)
* require\_once(被包含文件URL)

如果被包含文件找不到，提示的错误是一个致命，后面的代码不继续执行。

* once

只包含一次。

* set\_include\_path()

设定默认的包含路径。


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://note.niefee.com/summary/2/2016-nian-2-yue-22-ri.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
