PHP函数与文件内容的追加

函数

array_walk ——使用户自定义函数在每个数组元素上做回调处理

bool array_walk ( array &$array , callable $callback [, mixed $userdata = NULL ] )
  1. 典型情况下 callback 接受两个参数。array 参数的值作为第一个,键名作为第二个。
  2. 注意第一个参数内部是引用传递的数组,如果 callback 需要直接作用于数组中的值,则给 callback 的第一个参数指定为引用。这样任何对这些单元的改变也将会改变原始数组本身。
  3. 只有 array 的值才可以被改变,用户不应在回调函数中改变该数组本身的结构。例如增加/删除单元,unset 单元等等。如果 array_walk() 作用的数组改变了,则此函数的的行为未经定义,且不可预期。

array_map——为数组的每个元素应用回调函数

array array_map ( callable $callback , array $array1 [, array $... ] )

array_map():返回数组,是为 array1 每个元素应用 callback函数之后的数组。 callback 函数形参的数量和传给 array_map() 数组数量,两者必须一样。

测试

$newarray = array_map(function($a,$b){
    return  $a."  ".$b;
},[1,2,3],[0,0,0,0,0]);
var_dump($newarray);


array (size=5)
  0 => string '1  0' (length=4)
  1 => string '2  0' (length=4)
  2 => string '3  0' (length=4)
  3 => string '  0' (length=3)
  4 => string '  0' (length=3)

 

通过以上的叙述,这两者功能都差不多,都是修改数组的值(修改方式不同)

  1. array_walk实现功能array_map也可以实现;前者作用于一个数组,后者作用于多个数组。
  2. array_walk修改的是原数组的值(不能修改键),因此要引用传递。array_map同时遍历多个数组后根据返回值重新组成一个数组(不知性能怎么样)。

array_filter——用回调函数过滤数组中的单元

array array_filter ( array $array [, callable $callback [, int $flag = 0 ]] )
//并不是对原数组进行修改,而是根据条件进行过滤

依次将 array 数组中的每个值传递到 callback 函数。如果 callback 函数返回 true,则 array 数组的当前值会被包含在返回的结果数组中。数组的键名保留不变。

Note: 

callback 使用的回调函数 ;如果没有提供 callback 函数, 将删除 array 中所有等值为 FALSE 的条目。更多信息见转换为布尔值 这里就可以进行数组去空。

 

追加文件内容

file_put_contents——将一个字符串写入文件;依次调用 fopen()fwrite() 以及 fclose() 功能一样。

int file_put_contents ( string $filename , mixed $data [, int $flags = 0 [, resource $context ]] )

如果文件不存在,则创建文件。

Note  flags参数

  1. FILE_USE_INCLUDE_PATH 在 include 目录里搜索 filename。 更多信息可参见 include_path
  2. FILE_APPEND  如果文件 filename 已经存在,追加数据而不是覆盖
  3. LOCK_EX  在写入时获得一个独占锁。

 

fwrite — 写入文件(可安全用于二进制文件)这里就用移动指针,因为每一个新资源的指针都为0,因此每次写入都是从开头开始写入,而并不会清空文件。

我觉得file_put_contents,就是每次写入时先对文件进行清空,在写入

//清空文件
fopen('file.php','wb');

 

移动指针函数

int fseek ( resource $handle , int $offset [, int $whence = SEEK_SET ] )

参数说明

offset 偏移量。 要移动到文件尾之前的位置,需要给 offset 传递一个负值,并设置 whenceSEEK_END

whence
  • SEEK_SET – 设定位置等于 offset 字节。
  • SEEK_CUR – 设定位置为当前位置加上 offset
  • SEEK_END – 设定位置为文件尾加上 offset

要用fwrite方法对文件内容进行追加,就必须要设置$offset<0,$whence=SEEK_END。

0 条评论
发表一条评论