PHP基础
1.文件操作
文件读取:
<?php
$dir="./test.txt"; //打开文件所在位置
if(!file_exists($dir)) //判断此文件是否存在,如果不存在则输出如下
{
echo "zashdjka";
}
else
{
$fp =fopen($dir,"r"); //将打开的位置和给的读权限传参给$fp
while(!feof($fp)) //feof — 测试文件指针是否到了文件结束的位置
{
echo fgets($fp)."<br>"; //fgets — 从文件指针中读取一行
}
fclose($fp); //关闭文件打开的指针
}
?>
文件mode属性(代表文件打开的模式):
常用文件模式
r 只读模式,打开文件,从文件头开始读。
r+ 读写模式,打开文件,从文件头开始读写。
w 只写模式,打开文件,从文件头开始写,如果文件已存在,则覆盖文件原内容,如果文件不存在,则创建文件。
w+ 读写模式,打开文件,从文件头开始读写,如果文件已存在,则覆盖文件原内容,如果文件不存在,则创建文件。
a 追加模式,打开文件,如果文件已有内容,从文件后面追加写,如果文件不存在,则创建文件。
a+ 读和追加模式,打开文件,如果文件已有内容,从文件后面读或追加写,如果文件不存在,则创建文件。
x 谨慎写模式,打开文件,从文件头开始写,如果文件不存在,那么文件不会被打开,函数会返回false,并产生一个警告。
x+ 谨慎读写模式,读/写模式打开文件,从文件头开始读写,如果文件不存在,那么文件不会被打开,函数会返回false,并产生一个警告。
b 二进制模式,用于与其他模式连接,如果文件系统能够区分二进制文件和文本文件,你肯能会使用它。Windows可以区分,而UNIX不能区分,推荐使用这个模式,以便于系统的兼容性,二进制模式是默认的模式。
t 文本模式,用于与其他模式结合,只是Windows下的一个选项,不推荐使用,除非你在曾经的代码中使用了b选项。那么文件不会被打开
文件写入:
<?php
$dir = "./ip.txt"; //文件所在位置
$net = "192.168.1."; //输出的字符串
$fp = fopen ($dir,"w+d"); //fopen打开文件,如果文件不存在就追加
if(file_exists($dir)){ //file_exists判断检查文件或目录是否存在
for ($a=0;$a<=255;$a++){ //循环结构
fwrite($fp,"$net"."$a"."\r\n"); //fwrite写入文件(可安全用于二进制文件)
}
}
?>
在这里不会输出东西,因为都将内容写入到了创建的ip.txt
因为之前没有ip.txt这个文件夹,之后创建的,然后将内容写入到了ip.txt中
2.数组:
索引数组及遍历:
<?php
$arr=array("aa","abb","ccc");
echo $arr[0],"<br>";
echo $arr[1],"<br>";
echo $arr[2],"<br>";
foreach($arr as $a){ //普通目录遍历(就是索引数组目录遍历)
echo $a,"<br>";
}
关联数组及遍历:
$arr1=array("name"=>"zxc","xing"=>"nan","nian"=>"18");
echo $arr1["name"],"<br>";
echo $arr1["xing"],"<br>";
echo $arr1["nian"],"<br>";
foreach($arr1 as $b=>$c){ //$key=>$value 的意思是将这个值关联上,任意数都可以关联
echo "b=".$b." "."c="."$arr1[$b]"."<br>"; //输出调用
}
二维数组及遍历:
$arr2=array(
array("q","w","e"),
array("z","x","c") //在数组里面不需要加分号,必须加逗号
);
echo $arr2[0][0],"<br>";
echo $arr2[0][1],"<br>";
echo $arr2[0][2],"<br>";
?>
3.函数:
<?php
普通的函数传值:
function example($num){ //函数定义,函数名,和参数
echo "$num * $num=".$num*$num,"<br>"; //函数运算
}
$var ='example'; //将函数名储存在变量中
$var(1); //将变量的值传给函数
普通的调用函数:
function zxc($z,$x,$c){
echo "$z+$x+$c=".$z+$x+$c,"<br>"; //输出这个函数
}
$z=1;
$x=2;
$c=3; //给这个函数内的所有变量赋值
zxc($z,$x,$c);//调用这个函数
值传递:
$num=10;
function zhichuan($a){
$a=100;
}
$a=$num; //值传递的根本表现形式
zhichuan($num);
echo $num,"<br>"; //值传递不会将num替换掉
地址传递:
function dichuan(&$b){
$b=100;
}
dichuan($num);
echo $num,"<br>"; //地址传递可以将外边的num替换掉
function morencanshu($name,$add="dizhibu"){
echo 'name:'.$name,'<br>';
echo 'dizhi:'.$add,'<hr>';
}
morencanshu('tom',"beijing"); //函数调用,并赋值,复制会覆盖在函数内定义的数
morencanshu('berry'); //函数调用,并赋值berry,没赋值的输出之前在函数内定义的
function chuan($a,$b,$c){
echo $a,"<br>";
return $b; //函数结束,echo $C不会被输出,return的性质
echo $c;
}
echo chuan(1,2,3);
?>
4.计算器表单交互
源码
<form action="" method="post">
<input type="text" name="x" value=""><br>
<input type="text" name="y" value=""><br>
<input type="submit" name="jia" value="+"><br>
<input type="submit" name="jian" value="-"><br>
<input type="submit" name="cheng" value="*"><br>
<input type="submit" name="chu" value="/"><br>
<?php
if(empty($_POST)!=1){
if(empty($_POST["jia"])!=1){
echo $_POST["x"]+$_POST["y"];
}
elseif(empty($_POST["jian"])!=1){
echo $_POST["x"]-$_POST["y"];
}
elseif(empty($_POST["cheng"])!=1){
echo $_POST["x"]*$_POST["y"];
}
elseif(empty($_POST["chu"])!=1){
echo $_POST["x"]/$_POST["y"];
}
}
?>
实现效果: