//读取文件函数
<?
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);
}