首页 > 编程技术 > php

php 写入和读取文件函数

发布时间:2016-11-25 15:09

//读取文件函数
<?
function readfromfile($file_name) {
if (file_exists($file_name)) {

$filenum=fopen($file_name,"r");
flock($filenum,lock_ex);
$file_data=fread($filenum, filesize($file_name));
rewind($filenum); //osphp.com.cn
fclose($filenum);
return $file_data;
}
}
?>

 

//写入文件函数
<?
function writetofile($file_name,$data,$method="w") {
$filenum=fopen($file_name,$method);

flock($filenum,lock_ex);
$file_data=fwrite($filenum,$data);
fclose($filenum);
return $file_data;
}
?>

unset ( mixed var [, mixed var [, ...]])
unset() 销毁指定的变量。注意在 php教程 3 中,unset() 将返回 true(实际上是整型值 1),而在 php 4 中,unset() 不再是一个真正的函数:它现在是一个语句。这样就没有了返回值,试图获取 unset() 的返回值将导致解析错误


null 字节是变量为空 $t = ''; 变量有值,不过是空,isset()是true
null 常数是 $t = null; 变量没有值,连空都不是,isset()是false

<?php
$a = array(
'a' => 'a',
'b' => 'b'
);
$b = array(
'a' => 'a',
'b' => 'b'
);
$a['b'] = null;
unset($b['b']);
print('<pre>');
print_r($a);
print('<br />');
print_r($b);
print('</pre>');
?>

结果:

 

array
(
[a] => a
[b] =>
)
array
(
[a] => a
)

php教程文件写操作
将数据写入文件的操作主要涉及三个步骤及部分文件操作函数如下:
  1、打开文件(文件操作函数:fopen)
  2、写入文件(文件操作函数:fwrite等)
  3、关闭文件(文件操作函数:fclose)
  下面通过文件读写操作代码实例教程来讲解
  基本的php文件写入操作函数fopen、fwrite、fclose应用教程
1、使用fopen函数打开文件,在应用fopen函数准备打开文件时,你首先需要明确:
  打开文件干什么?是读文件中的数据呢,还是将数据写入文件,亦或者读写文件?
  另外你需要考虑如果文件中已经存在相关数据,你是覆盖原有文件中的数据呢,还是仅仅将新数据添加至文件末尾
  这些问题涉及到php文件读写操作中的fopen函数中的文件模式的应用,fopen函数原型如下:
复制代码 代码如下:
fopen(filename,mode,include_path,context)

  调用文件操作函数fopen()时,通常需要传递两个或三个参数。
  filename:规定要打开的文件或url。可以指定文件的绝对路径,windows一般为c:,unix为/,通过url,你也可以打开远程文件。在这里写入的文件与php文件写入代码文件我放在同一个目录。
  mode:规定要求到该文件/流的访问类型。即打开文件的模式。
  include_path:可选项。如果需要在include_path中搜索文件的话,可以将该参数设为1或true。
  常用的fopen的文件操作模式说明
  ”r” - 以只读方式打开文件,从文件头开始读。
  ”r+” - 以读写方式打开文件。
  ”w” - 以写入方式打开文件,从文件头开始写。如果文件不存在则尝试创建,如果文件存在,则先删除文件中的内容。
  ”w+” - 以读写方式打开文件,从文件头开始读写。如果文件不存在则尝试创建,如果文件存在,则先删除文件中的内容。
  ”a” - 以写入方式打开,从文件末尾开始追加写。如果文件不存在则尝试创建。
  ”a+” - 以读写方式打开,从文件末尾开始追加写写或者读。如果文件不存在则尝试创建。
  注意:在进行文件读写操作时,你一定要确保打开的文件具有相应的读写权限,否则fopen会报错。你可以使用@来抑制产生的错误,然后合理处理错误。
  2、在使用文件操作函数fopen打开文件后,需要通过对变量赋值,然后写到$fp指向的文件指针中去,在上述php文件写入操作教程实例中,我使用的是一行一行存储,即换行储存,主要通过n作为换行分隔符。
  fwrite文件写入函数原型如下:
复制代码 代码如下:
fwrite(fp,string,length)

在这里你也可以使用文件写入函数fputs,其是fwrite的别名函数,功能与用法与fwrite一样。

  在文件写入函数fwrite中length是可选项,主要用来设定写入文件的最大字符数,如果设定了这个参数,fwrite会按设定的length,在指定文件中写入规定长度的字符。fwrite()返回写入文件的字符数,出现错误时则返回false。

  在文件写入操作完成后,需要关闭文件句柄,否则会占用系统资源等。可以使用fclose($fp)函数来完成这件事。文件关闭成功则返回true,否则返回false。

php教程验证请求页面来源
if( $_server['http_x_requested_with'] == 'xmlhttprequest' ) {
    echo 'ajax';
} else {
    echo 'normal';
}

jquery内部实现ajax的时候,已经加入了标识
jquery源码中是这样的:
xhr.setrequestheader("x-requested-with", "xmlhttprequest");

所以,在php中可以通过http_x_requested_with来判断,不需要另外实现 :)


下面看原理

<strong>在发送ajax请求的时候,我们可以通过xmlhttprequest这个对象,创建自

定义的header头信息</strong>
如果您使用的是原生的ajax方法,也就是未使用jquery或者其他js框架包装的ajax

方法,那么代码如下:

xmlhttprequest.setrequestheader("request_type","ajax"); 
通过jquery的$.ajax()方法,可以轻松地在发送ajax请求之前,创建我们自定义的

header头信息。

$.ajax({
        type                : "get",
        url                : base_url +

'php_check_ajax_request/get_user_list.html',
        beforesend         : function (xmlhttprequest) {
            xmlhttprequest.setrequestheader("request_type","ajax");
        },
        success         : function(data){
                $("#user_list").html(data);
                $tip.hide();
                $button.attr('disabled',true);
        }
});


在php获取时

if (isset($_server['http_request_type']) && $_server['http_request_type']

== "ajax"){//ajax提交
}else{//非ajax提交
}

foreach 语句用于循环遍历数组。

每进行一次循环,当前数组元素的值就会被赋值给 value 变量(数组指针会逐一地移动) - 以此类推。

语法

foreach (array as value)
{
    code to be executed;
}

例子
下面的例子示范了一个循环,这个循环可以输出给定数组的值:

<html>
<body>

<?php教程
$arr=array("one", "two", "three");

foreach ($arr as $value)
{
  echo "value: " . $value . "<br />";
}
?>

</body>
</html>

下面详细看一下详细说明

foreach ($array as &$row) {
$row = explode('/', $row);
}
foreach ($array as $row) {
//do something
}

这么写,在第二个循环会出逻辑错误,加入第二个循环中do something的地方是输出$row,循环到最后一个的时候的输出是倒数第二个元素,而不是最后一个

要这么写
复制代码 代码如下:

foreach ($array as &$row) {
$row = explode('/', $row);
}
unset($row);
foreach ($array as $row) {
//do something
}

或者第一个循环这么写
复制代码 代码如下:

foreach ($array as $key => $row) {
$array[$key] = explode('/', $row);
}
标签:[!--infotagslink--]

您可能感兴趣的文章: