php基础入门篇学习笔记

 更新时间:2016年11月25日 15:07  点击:1361
本文章详细的介绍了在php学习中的最基础的内容包括了基本数据类型、变量类型、操作符等入门都会要接触到的东西。

php支持的基本数据类型:
Integer:整数
Float(Double,双精度值):浮点数,表示所有实数
String:字符串
Boolean:布尔值,true/false
Array:保存具有相同类型的多个数据项
Object:对象,保存类的实例
NULL:没有被赋值、已经被重置或被赋值为特殊值NULL的变量
特定的内置函数(例如数据库函数)将返回resource类型的变量

四种标量类型:

string(字符串)
integer(整型)
float(浮点型,也作 double )
boolean(布尔型)
两种复合类型:

array(数组)
object(对象)
两种特殊类型:

resource(资源)
NULL(空)
查看变量类型
通过 gettype() 函数可以方便的查看某个变量的类型:

 代码如下 复制代码

<?php
$var_bool = TRUE;     // a boolean
$var_str  = "foo";     // a string
$var_int  = 12;      // an integer

echo gettype($var_bool);    // 输出 boolean
echo gettype($var_str);     // 输出 string
echo gettype($var_int);     // 输出 integer
?>

提示
由于历史原因,如果是 float 类型数据,gettype() 函数返回的是 double,而不是 float 。
如果想查看某个表达式的值和类型,请使用用 var_dump() 函数。
判断变量类型
如果想通过判断变量类型来确定下一步逻辑动作,不要使用 gettype() ,而使用 is_type 系列函数:

 代码如下 复制代码

<?php
$var_int  = 12;

// 如果 $var_int 是 int 类型,这进行加法
if (is_int($var_int)) {
    $var_int = $var_int+4;
}
echo $var_int;  // 输出 16
?>


NULL和resource都代表外部资源,例如数据库连接
基本上不能直接操作一个resource变量,但是通常它们都将被函数返回,而且必须作为参数传递给其他函数。

在php中,变量的类型是由赋给变量的值确定的。(动态类型语言)
PHP可以在任何时间根据保存在变量中的值来确定变量的类型,也就是具有在任何时间透明地改变变量类型的功能。
PHP将“自动地”获得输入的数据类型,一旦从变量中检索变量值,它将返回具有相同数据类型的数据。
养成习惯:常量名称都是由大写字母组成的。这样容易区分变量和常量。
常量和变量之间的一个重要不同点在于引用一个常量的时候,它前面并没有$符号。
常量和变量的另一个差异在于常量只可以保存布尔值、整数、浮点数或字符串数据,这些类型都是标量数据。

变量类型变化(juggling)
PHP不需要(或者说不支持)在声名变量明确他的变量类型;一个变量的类型是由这个变量被使用的前后关系来决定的,也就是说,如果你给一个变量var赋了 一个字符串的值,var就变成了字符串变量。如果你再将一个整数赋值给var,他又变成了一个整数型变量。 一个PHP自动转化变量类型的例子是加法的操作符’+’。如果任何一个操作数都是双精度数,那么所有的操作数被当作双精度数求值,并且结果也是双精度数。 否则,操作数将被认为是整数,结果也将会是整数。注意这并不影响每个操作数本身的变量类型,唯一的变化就是操作数在计算的过程中被如何处理。 $foo  =  "0";  //  $foo  是一个字符串  ,值是“0”(ASCII  48)

PHP代码

 代码如下 复制代码
$foo  =  "0";  //  $foo  是一个字符串  ,值是“0”(ASCII  48)     
$foo++;  //  $foo  是一个字符串,值是“1”(ASCII  49)     
$foo  +=  1;  //  $foo  现在是一个整数(2)了     
$foo  =  $foo  +  1.3;  //  $foo  现在是一个双精度数(3.3)了     
$foo  =  5  +  "10  Little  Piggies";  //  $foo  是一个整数  (15)     
$foo  =  5  +  "10  Small  Pigs";  //  $foo  是一个整数  (15)  


如果你觉得上面例子中最后两个表达式看起来有点奇怪的话,请看 “字符串的转化”部分。 如果你希望强制一个变量被当作某种固定的类型来计算,请看 “类型强制(casting)” 一节。如果你希望转变一个变量的类型,请看函数“settype()”的说明。
 确定一个变量的类型
因为PHP自己决定变量的类型并且一般按照需要转化他们,一个特定的变量的类型不是在任何时间都非常明显。PHP包括一些函数可以找出这个变量的类型。这 些函数是gettype(), is_long(), is_double(), is_string(), is_array(), 和 is_object().
类型强制(type casting)
在PHP中类型强制同在C语言中大抵相似:将需要的类型的种类写在要强制的变量的前面的圆括号中。
 

PHP代码

 代码如下 复制代码
$foo  =  10;  //  $foo  是一个整数    
$bar  =  (double)  $foo;  //  $bar  是一个双精度数   


以下的强制方式是允许的: (int), (integer) – 强制成整数 (real), (double), (float) – 强制成双精度数 (string) – 强制成字符串 (array) – 强制成数组 (object) – 强制成对象 注意在圆括号中允许制表符(tabs)和空格(spaces) ,因此下面的语句是等价的: $foo = (int) $bar; $foo = ( int ) $bar;
字符串转化
当一个字符串被当作数字型的值来计算时,他的结果和类型如下面所述的决定。 如果这个字符串含有字符’.’,’e’,或者’E’,则被当作双精度类型变量来处理,否则当作是整数。 这个字符串的值由词首部分决定。如果这个字符串以任何有效的数字的数据开始,那么这个数字数据就是这个字符串参加运算的值。否则,值为零(zero)。有 效的数字数据是遵循下面的这些标记的,跟随在一个或多个数字后面(可以包含小数点),跟随在一个可选的指数后面。指数是由一个或多个数字跟在’e’或 ’E’后面构成的。
 

PHP代码

 代码如下 复制代码
$foo  =  1  +  "10.5";  //  $foo  是双精度数  (11.5)     
$foo  =  1  +  "-1.3e3";  //  $foo  是双精度数(-1299)     
$foo  =  1  +  "bob-1.3e3";  //  $foo  是整数  (1)     
$foo  =  1  +  "bob3";  //  $foo  是整数  (1)     
$foo  =  1  +  "10  Small  Pigs";  //  $foo  是整数  (11)   
$foo  =  1  +  "10  Little  Piggies";  //  $foo  是整数  (11);     
//  这个字符串包括字符'e'  


标识符


操作符:
1)赋值操作符:=

2)算术操作符:+,-,*,/,%(取模)

3)连接操作符:. ,无论操作数是什么,都当成String,结果返回String

4)合计赋值操作符(Combined Assignment Operators):+=,*=,/=,-=,%=,.=

5)自动增减操作符(Automatically Incrementing and Decrementing):

(1)$variable+=1 ⇔$variable++;$variable-=1 ⇔$variable-,跟c语言一样,先做其他操作,后++或-

(2)++$variable,-$variable,先++或-,再做其他操作

6)比较操作符:

= =(左边等于右边),!=(左边不等于右边),
= = =(左边等于右边,且数据类型相同),
>=,>,<,<=

7)逻辑操作符:|| or,&& and,xor(当左右两边有且只有一个是true,返回true),!

一个参考表

运算符(Arithmetic Operators)

Operator
符号
Description
描述
Example
案例
Result
结果
+ Addition
加号
x=2
x+2
4
- Subtraction
减号
x=2
5-x
3
* Multiplication
乘号
x=4
x*5
20
/ Division
除号
15/5
5/2
3
2.5
% Modulus (division remainder)
求模(余数)
5%2
10%8
10%2
1
2
0
++ Increment
自加
x=5
x++
x=6
-- Decrement
自减
x=5
x--
x=4

Assignment Operators
分配符(Assignment Operators)

Operator
符号
Example
案例
Is The Same As
等同于
= x=y x=y
+= x+=y x=x+y
-= x-=y x=x-y
*= x*=y x=x*y
/= x/=y x=x/y
%= x%=y x=x%y

Comparison Operators
比较符(Comparison Operators)

Operator
符号
Description
具体描述
Example
案例
== is equal to
等于
5==8 返回 false
!= is not equal
不等于
5!=8 返回  true
> is greater than
大于
5>8 返回  false
< is less than
小于
5<8 返回  true
>= is greater than or equal to
大于等于
5>=8 返回  false
<= is less than or equal to
小于等于
5<=8 返回  true

Logical Operators
逻辑判断符(Logical Operators)

Operator
符号
Description
描述
Example
案例
&& and
x=6
y=3

(x < 10 && y > 1) 返回 true

|| or
x=6
y=3

(x==5 || y==5) 返回 false

! not
x=6
y=3

!(x==y)返回true

其他操作符:

三元操作符、错误抑制操作符、执行操作符、数组操作符、类型操作符

运算符"?"前的表达式

如果一个包含二元运算符的表达式出现在三元运算符" ? : "的"?"之前,那么应该给表达式添上一对圆括号。例如:
(x >= 0) ? x : -x;

下面我们来看一个简单的?号表达式实例

 代码如下 复制代码

<?

$a=1;

echo $a?'true':'false';

输出结果为 trur;

再看

if( $a )

{

   echo 'true';

}

else

{

   echo 'false';

}

PHP 5也支持接口的概念,并为之引入了interface和implements关键字。和Java一样,PHP 5使用接口也实现类似于“多重继承”的效果。

PHP5接口语法如下:
声明一个类的时候我们使用的关键字是”class”,而接口一种特殊的类,使用的关键字是“interface”;

类的定义:class 类名{ … },接口的声明:interface 接口名{ …}

具体PHP5抽象类的代码如下:

 代码如下 复制代码

abstract class AbstractClass {     

   abstract public function test();     

}     

    

class ImplementedClass extends AbstractClass {     

   public function test() {     

       echo "ImplementedClass::test() called. ";     

   }     

}     

    

$o = new ImplementedClass;     

$o->test();    


实例二

 代码如下 复制代码

interface displayable {     

  function display();     

}     

interface printable {     

  function doprint();     

}     

    

class foo implements displayable,printable {     

  function display() {     

    // code     

  }   function doprint() {     

    // code     

  }     

}    

 


抽象类和PHP5接口的引入使PHP成了一个完全面向对象的语
//定义一个接口使用interface关键字,“One”为接口名称

 代码如下 复制代码

interface One
{
    //定义一个常量
    const constant = 'constant value';

    //定义了一个抽象方法”fun1”
    public function fun1();

    //定义了抽象方法”fun2”
    public function fun2();
}

上例中定义了一个接口”one”,里面声明了两个抽象方法“fun1”和”fun2”,因为接口里面所有的方法都是抽象方法,所以在声明抽象方法的时候就不用像抽象类那样使用”abstract”这个关键字了,默认的已经加上这个关键字,另外在接口里边的”public”这个访问权限也可以去掉,因为默认就是public的,因为接口里所有成员都要是公有的,所在对于接口里面的成员我们就不能使用“private”的和”protected”的权限了,都要用public或是默认的。另外在接口里面我们也声明了一个常量“constant“, 因为在接口里面不能用变量成员,所以我们要使用const这个关键字声明。

因为接口是一种特殊的抽象类,里面所有的方法都是抽象方法,所以接口也不能产生实例对象; 它也做为一种规范,所有抽象方法需要子类去实现。

我们可以使用”extends”关键字让一个接口去继承另一个接口;

 代码如下 复制代码

//使用”extends”继承另外一个接口
interface Two extends One
{
    function fun3();
    function fun4();
}

而我们定义一接口的子类去实现接口中全部抽象方法使用的关键字是”implements”,而不是我们前面所说的”extends”;

//使用“implements”这个关键字去实现接口中的抽象方法

 代码如下 复制代码

class Three implements One
{
    function fun1()
    {
        … …
    }

    function fun2()
    {
        … …
    }
}

//实现了全部方法,我们去可以使用子类去实例化对象了

 代码如下 复制代码
$three=new Three();

我们也可以使用抽象类,去实现接口中的部分抽象方法,但要想实例化对象,这个抽象类还要有子类把它所有的抽象方法都实现才行;

在前面我们说过,PHP是单继承的,一个类只能有一父类,但是一个类可以实现多个接口,就相当于一个类要遵守多个规范,就像我们不仅要遵守国家的法律,如果是在学校的话,还要遵守学校的校规一样;

 代码如下 复制代码

//使用implements实现多个接口
class Four implemtns 接口一,接口二,……
{
    //必须把所有接口中的方法都要实现才可以实例化对象。
}

PHP中不仅一个类可以实现多个接口,也可以在继承一个类的同时实现多个接口,一定要先继承类再去实现接口;

 代码如下 复制代码

//使用extends继承一个类,使用implements实现多个接口
class Four extends 类名一 implemtns 接口一,接口二,……
{
    //所有接口中的方法都要实现才可以实例化对象
    ………
}

讲了这么多最后看看一个实例


VideoCard.php 接口文件(显卡的功能接口定义)

 代码如下 复制代码
<?php
interface VideoCardInter{
function Display();
function getName();
}
?>

Dmeng.php 实现接口(帝盟的厂家实现了这些接口,怎么实现的,主板厂家不用管)

 代码如下 复制代码
<?php
include_once("VideoCard.php");
class Dmeng implements VideoCardInter {
function Display(){
echo "Display";
}
function getName(){
return "Dmeng VideoCard";
}
}
?>

Mainboard.php  应用接口(把显卡插到主板上,主板只要用这些接口就行了,也可以不用)

 代码如下 复制代码
<?php
include_once("VideoCard.php");
include_once("Dmeng.php");
class Mainboard{
var $vc;
function run(VideoCardInter $vc){  //定义VideoCardInter接口类型参数,这时并不知道是谁来实现。
$this->vc=$vc;
$this->vc->Display();
echo "主板运行!";
}
}
$conputer=new Mainboard();
$conputer->run(new Dmeng); 

//用的时候把实现接口类的名称写进来,(现在是帝盟的显卡,也可以换成别的场家的,只要他们都实现了接口)
?>上面是转自的,然后自己试着写了点东西:把自己的思想总结一下
这里我想是分成4个方面

1,静态链接数据库类(基本的链接数据库,查询记录数,返回结果集等等)

2,每个模块的接口(例如新闻类接口  NewsInterface)

3,实现接口的类(新闻实现类  NewsInterfaceImpl 这里面写一些页面中用到的方法,然后new这个对象 调用这里么的方法)

4,模块类(新闻类  News)

以前很少这么详细的给大家介绍php中的变量、常量以及魔术常量的用法以及参考表,这文章对于初学者有不小的帮助有需要了解的朋友可以参考一下。

变量:

变量用于存储值,比如数字、文本字符串或数组。

一旦设置了某个变量,我们就可以在脚本中重复地使用它。

PHP 中的所有变量都是以 $ 符号开始的。

在 PHP 中设置变量的正确方法是:

 代码如下 复制代码
$var_name = value;

PHP 的入门者往往会忘记在变量的前面的 $ 符号。如果那样做的话,变量将是无效的。

让我们试着创建一个存有字符串的变量,和一个存有数值的变量:

 代码如下 复制代码
<?php
$txt = "Hello World!";
$number = 16;
?>

 

1.如何定义变量,它和C# 等语言有什么不同呢?
   PHP 中的变量用一个美元符号后面跟变量名来表示。变量名是区分大小写的。例如:

 代码如下 复制代码
<?php
 $var='Jim';
  $VAR='Kimi;
  echo "$var,$VAR";//输出“Jim,Kimi"

 ?>你可能还关心变量的命名,其实和大多数语言一样。
2. 变量区分大小写吗?
   如 1里说的,区分大小写。
  注意,需要说明的一点是自PHP4以来,引入了引用赋值的概念,其实和多数语言的引用类似,不过我觉得最类似的是C/C++.因为它也用到了"&"符号。例如: 

 代码如下 复制代码
1 <?php
2 $foo = 'Bob';              // 赋值'Bob'给foo
3 $bar = &$foo;              // 通过$bar引用.注意&符号
4 $bar = "My name is $bar";  // 修改 $bar
5 echo $bar;
6 echo $foo;                // $foo 也修改了.
7 ?>

和其他语言一样,只能对有变量名的变量才可以引用。


好了现在大家对变量应该有一个大概的了解了,现在我们看看变量的间接引用和字符串连接。

①变量的间接引用: 先看个例子吧

 代码如下 复制代码
<?
 $a = "b";
 $$a = "123";
 echo $b;
?>

 

上面的输出结果是123

我们可以看到在第二行代码中多了一个$,并通过指定的名称访问变量,指定的名字存储在$a("b")中,并把这个变量$b的值更改为123。因此,这样的$b的变量被创建和赋值。

通过在变量的前面增加附加的$标记,你可以任意增加引用的次数。

 ②字符串连接: 先看个例子吧

 代码如下 复制代码
<?
$a = "PHP 4" ;
$b = "功能强大" ;
echo $a.$b;
?>

 

需要注意的是 在PHP 4.2.0 以及后续版本中,PHP 指令 register_globals 的默认值为 off。这是 PHP 的一个主要变化。让 register_globals 的值为 off 将影响到预定义变量集在全局范围内的有效性。例如,为了得到 DOCUMENT_ROOT 的值,将必须使用 $_SERVER['DOCUMENT_ROOT'] 代替 $DOCUMENT_ROOT,又如,使用 $_GET['id'] 来代替 $id 从 URL http://www.example.com/test.php?id=3 中获取 id 值,亦或使用 $_ENV['HOME'] 来代替 $HOME 获取环境变量 HOME 的值

我们看到代码的第三行,英文的(句)号,它可以将字符串连接起来,变成合并的新字符串。

 

超全局变量 描述
$GLOBALS 包含一个引用指向每个当前脚本的全局范围内有效的变量。该数组的键名为全局变量的名称。从 PHP 3 开始存在 $GLOBALS 数组。
$_SERVER 变量由 web 服务器设定或者直接与当前脚本的执行环境相关联。类似于旧数组 $HTTP_SERVER_VARS 数组(依然有效,但反对使用)。
$_GET 经由 URL 请求提交至脚本的变量。类似于旧数组 $HTTP_GET_VARS 数组(依然有效,但反对使用)。
$_POST 经由 HTTP POST 方法提交至脚本的变量。类似于旧数组 $HTTP_POST_VARS 数组(依然有效,但反对使用)。
$_COOKIE 经由 HTTP Cookies 方法提交至脚本的变量。类似于旧数组 $HTTP_COOKIE_VARS 数组(依然有效,但反对使用)。
$_FILES 经由 HTTP POST 文件上传而提交至脚本的变量。类似于旧数组 $HTTP_POST_FILES 数组(依然有效,但反对使用)
$_ENV 执行环境提交至脚本的变量。类似于旧数组 $HTTP_ENV_VARS 数组(依然有效,但反对使用)。
$_REQUEST  经由 GET,POST 和 COOKIE 机制提交至脚本的变量,因此该数组并不值得信任。所有包含在该数组中的变量的存在与否以及变量的顺序均按照 php.ini 中的 variables_order 配置指示来定义。此数组在 PHP 4.1.0 之前没有直接对应的版本。参见 import_request_variables()
$_SESSION 当前注册给脚本会话的变量。类似于旧数组 $HTTP_SESSION_VARS 数组(依然有效,但反对使用)
 

常量:

常量是一个简单值的标识符(名字)。如同其名称所暗示的,在脚本执行期间该值不能改变(除了所谓的魔术常量,它们其实不是常量)。常量默认为大小写敏感。通常常量标识符总是大写的。

常量名和其它任何 PHP 标签遵循同样的命名规则。合法的常量名以字母或下划线开始,后面跟着任何字母,数字或下划线。用正则表达式是这样表达的:[a-zA-Z_x7f-xff][a-zA-Z0-9_x7f-xff]*

 

①是在程序执行期间无法改变的数据,常量的作用域是全局的。

②常量的命名与与变量相似,只是不带美元符号“$”。一个有效的常量名由字母或者下划线开头,后面跟报上任意数量的字母、数字或者下划线。

③一般在PHP中常量都为大写字母而且又分为系统常量和自定义常量。

 

系统常量我们就大概说了 ,这个在后面的知识会介绍到。

1、__FILE__    默认常量,是指PHP程序文件名及路径;
2、__LINE__    默认常量,是指PHP程序的行数;
3、__CLASS__    类的名称;

自定义常量:通过define()函数来定义一个常量的,

其语法格式为:bool define ( string $name, mixed $value [, bool case_$insensitive] )

name:指定常量的名称。
value:指定常量的值。
insensitive:指定常量名称是否区分大小写。如果设置为true则不区分大小写;如果设置为false则区分大小写。如果没有设置该参数,则取默认值false。

<?php

// 合法的常量名
define("FOO",     "something");
define("FOO2",    "something else");
define("FOO_BAR", "something more");

// 非法的常量名
define("2FOO",    "something");

// 下面的定义是合法的,但应该避免这样做:(自定义常量不要以__开头)
// 也许将来有一天PHP会定义一个__FOO__的魔术常量
// 这样就会与你的代码相冲突
define("__FOO__", "something");

?>

几个 PHP 的“魔术常量”
名称 说明
__LINE__ 文件中的当前行号。
__FILE__ 文件的完整路径和文件名。如果用在被包含文件中,则返回被包含的文件名。自 PHP 4.0.2 起,__FILE__ 总是包含一个绝对路径(如果是符号连接,则是解析后的绝对路径),而在此之前的版本有时会包含一个相对路径。
__DIR__ 文件所在的目录。如果用在被包括文件中,则返回被包括的文件所在的目录。它等价于 dirname(__FILE__)。除非是根目录,否则目录中名不包括末尾的斜杠。(PHP 5.3.0中新增) =
__FUNCTION__ 函数名称(PHP 4.3.0 新加)。自 PHP 5 起本常量返回该函数被定义时的名字(区分大小写)。在 PHP 4 中该值总是小写字母的。
__CLASS__ 类的名称(PHP 4.3.0 新加)。自 PHP 5 起本常量返回该类被定义时的名字(区分大小写)。在 PHP 4 中该值总是小写字母的。
__METHOD__ 类的方法名(PHP 5.0.0 新加)。返回该方法被定义时的名字(区分大小写)。
__NAMESPACE__ 当前命名空间的名称(大小写敏感)。这个常量是在编译时定义的(PHP 5.3.0 新增)

本文章介绍了下面几个常用的文件操作函数 file_get_contents 读取整个文件内容 fopen 创建和打开文件 fclose 关闭文件 fgets 读取文件一行内容 file_exists 检查文件或目录是否存在 file_put_contents 写入文件 fwrite 写入文件

用 PHP 内置函数 file_exists 可以检查某个文件或目录是否存在。如果文件或目录存在,file_exists 函数返回 TRUE,如果不存在,则返回 FALSE。

下面是一个简单的检查文件是否存在的实例代码:

 代码如下 复制代码
<html><body><?php
$filename = "C:\blabla\php\hello.txt";
if (file_exists($filename)) 
{echo "The file $filename exists.";
}else  {
echo "The file $filename does not exist."
;}?>
</body>
</html>

如果文件存在,执行该 PHP 文件的显示结果是:

The file C:blablaphphello.txt exists.
如果文件不存在,执行该 PHP 文件的显示结果是:

The file C:blablaphphello.txt does not exist.
你也可以用file_exists 函数测试某个目录是否存在,示例代码如下:

 代码如下 复制代码

if (file_exists("C:\blabla\php"))
  {echo "yes";}
else
  {echo "no";}


用 PHP 内置函数 file_get_contents 可以读取整个文件内容。

file_get_contents 函数读取整个文件,返回一个字符串。file_get_contents 最简单的写法如下:

file_get_contents(filepath)
举个例子,你有一个 .txt 文件,文件的路径为:

C:blablaphphello.txt
下面的 php 代码用 file_get_contents 函数读取该文件,并输出该文件内容:

 代码如下 复制代码
<html>
<body>
<?php
$f = file_get_contents("C:\blabla\php\hello.txt");
echo $f;?>
</body>
</html>

注意:由于文件路径含有反斜杠,而在 PHP 字符串里,反斜杠需要转义,要用两个反斜杠表示。(如果你忘记了 PHP 某些特殊字符的转义,请翻阅前面所讲的 PHP 字符串。)

file_get_contents 函数的返回值是所读取的文件内容字符串,如果出错,返回 FALSE。


使用 PHP 内置函数 fopen,可以打开一个文件。

打开文件
fopen 最简单语法如下:

fopen(filepath,mode)
下面是打开一个文件的 PHP 代码示例:

 代码如下 复制代码
<?php
$f = fopen("c:\data\info.txt", "r");
?>

其中,c:\data\info.txt 是文件路径,r 表示打开文件的模式(mode) 为只读 (read only) 模式。

fopen 函数打开文件的模式有以下几种:

模式 (mode) 说明
r 只读,文件指针在文件开始处。
r+ 读和写,文件指针在文件开始处。
w 只写,文件指针在文件开始处,将文件长度截成0。

如果文件不存在,创建文件。
 
w+ 读和写,文件指针在文件开始处,将文件长度截成0。

如果文件不存在,创建文件。
 
a 只写,文件指针在文件末尾处。

如果文件不存在,创建文件。
 
a+ 读和写,文件指针在文件末尾处。

如果文件不存在,创建文件。
 
x 只写,文件指针在文件开始处。

如果文件已经存在,fopen () 函数返回 FALSE 并产生一个E_WARNING 级别的错误。

如果文件不存在,创建文件。
 
x+ 读和写,文件指针在文件开始处。

如果文件已经存在,fopen () 函数返回 FALSE 并产生一个E_WARNING 级别的错误。

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

如果成功打开文件,fopen 函数的返回值是一个文件指针资源 (a file pointer resource),如果出错,返回 FALSE。

创建文件
选择 fopen 函数参数 mode 的适当的值 ,你可以用 fopen 创建一个文件,比如:

 代码如下 复制代码

<?php
$f = fopen("c:\data\101.txt", "w");
$f = fopen("c:\data\102.txt", "w+");
$f = fopen("c:\data\103.txt", "a");
$f = fopen("c:\data\104.txt", "a+");
$f = fopen("c:\data\105.txt", "x");
$f = fopen("c:\data\106.txt", "x+");
?>

用 PHP 内置函数 fgets 可以读取文件的一行内容。

fgets读取文件一行内容的语法是:

fgets(filepointer)
下面我们举个例子讲述如何一行行读取一个文件。

假设我们有一个 sites.txt 文件,该文件有三行,内容如下:

woyouxian.comblabla.cngoogle.com
sites.txt 的文件路径是:

C:blablaphpsites.txt
我们用 PHP 一行行读取文件内容,PHP代码如下:

 代码如下 复制代码
<html>
<body>
<?php
$f= fopen("C:\blabla\php\sites.txt","r");
while (!feof($f)){ 
$line = fgets($f); 
echo "site: ",$line,"<br />";
}
fclose($f);?>
</body>
</html>

执行该 PHP 文件,返回的显示结果是:

site: woyouxian.comsite: blabla.cnsite: google.com
该 PHP 代码的第一行是打开文件,最后一行是关闭一个文件。当中的 while 循环语句表示,当文件没有结束,就读取一行,循环执行,直到文件指针到文章末尾为止。

feof 函数是PHP 的一个内置函数,用来测试文件指针是否已经到了文件末尾。如果是返回 TRUE,如果不是,返回 FALSE。eof 的英文意思就是 end of file,很容易记。

正常情况下,fgets 函数的返回值是一个字符串,如果出错,返回 FALSE。


讲述使用 PHP 内置函数 fclose 关闭一个文件。

fclose 函数语法如下:

fclose(filepointer)
如果成功,fclose 函数返回 TRUE,如果失败,fclose 函数返回 FALSE。

下面是一个 fclose 函数的 PHP 代码示例:

 代码如下 复制代码

<?php
$f = fopen("c:\data\info.txt", "r");
fclose($f);
?>


这一章节我们讲述如何用 fopen, fwrite, fclose 来实现打开文件、写入文件和保存关闭文件的这一系列的操作。重点讲述 fwrite 函数。

PHP 内置函数 fwrite 用于写入文件。

fwrite 函数的常用语法为:

fwrite(handle,string)
其中,参数 handle 表示文件指针资源 (通常由 fopen 函数创建),string 表示要写入的内容。

下面一个PHP 代码示例演示如何创建一个新文件,并写入内容,然后保存并关闭文件:

 代码如下 复制代码
<html><body><?php
$f= fopen("C:\blabla\php\write.txt","w");
fwrite($f,"It is awesome.");fclose($f);echo "done";
?>
</body>
</html>

执行该 PHP 文件后,会创建一个路径为 C:blablaphpwrite.txt 的文件,文件的内容是It is awesome.。

如果你想在现有文件上再追加内容,你只要修改 fopen 的 参数 mode 值即可,如下:

$f= fopen("C:\blabla\php\write.txt","a");
有关 fopen 函数的参数 mode 值,详见 fopen。

fwrite 函数返回写入文件的字节数 (number of bytes) ,如果出错,返回 FALSE。

 

PHP 内置函数 file_put_contents 用于写入文件。

file_put_contents 函数最简单的写法,可以只用两个参数,一个是文件路径,一个是要写入的内容,语法如下:

file_put_contents(filepath,data)
如果文件不存在,file_put_contents 函数会自动创建文件;如果文件已存在,原有文件被重写。

你可以利用 file_put_contents 函数创建并写入一个新文件,或者重写一个原有文件。

下面是一个使用 file_put_contents 函数的 PHP 代码示例:

 代码如下 复制代码
<html><body>
<?php$path ="C:\blabla\filesys\one.txt";
$content = "one for all";
file_put_contents($path,$content);
if (file_exists($path))
 {echo "ok";}else  {echo "ng";}
?></body></html>

该 PHP 代码示例会创建一个路径为 C:blablafilesysone.txt 的文件,该文件的内容是 one for all 。

如果你想在一个已有文件上追加内容,你也可以使用file_put_contents 函数,只需要加一个参数即可。

file_put_contents(filepath,data,flags)
当 flags 的值为 FILE_APPEND 时,表示在已有文件上追加内容。

比如我们要在上面示例的C:blablafilesysone.txt 文件上追加内容,我们可以这样写:

 代码如下 复制代码
<html><body><?php
$path ="C:\blabla\filesys\one.txt";
$content = " all for one";
file_put_contents($path,$content,FILE_APPEND);
if (file_exists($path)) 
{echo "ok";}else  {echo "ng";}
?></body>
</html>

执行该 PHP 文件之后,我们再看 C:blablafilesysone.txt 文件,发现文件内容增加了,变成了:

one for all all for one
file_put_contents 函数返回写入文件的字节数 (number of bytes) ,如果出错,返回 FALSE。

今天吃了没事干来讲述了一N多年前自己学习php是学习get全局变量的用法了,有需要的入门的朋友可以参考一下。

一,$_GET是获取表method为get形式的数据
二,$_GET获取url.php?i=12 的数据,
上面是我们常用的利用get来获取值的数据,

实例一,取得form的数据

 代码如下 复制代码

<form action ="get.php" method ="get">
Name: <input type="text" name="username" />
<input type ="submit" value="ok" />
</form>

get.php

假如我填写的是 www.111cn.net

 代码如下 复制代码

You are <?php echo $_GET["username"]?>.


输出结果是

 代码如下 复制代码

You are www.111cn.net

那么我们的点击提交时url会是什么样式呢

 代码如下 复制代码

get.php?username=www.111cn.net

这样形式了,也就是我们说的第二种获取数据的方法,下面我们来看利用a带参考的

/a.php?value=my

a.php

 代码如下 复制代码

value的值是 <?php echo $_GET["value"]; ?>.<br />

输出结果是

 代码如下 复制代码

value的值是 my


这个看上去和form 的method=get没什么区别吧,哈哈,好了文章就到这里了。


get还有一种方法,那就是直接$_GET这样,会是什么形式呢,看实例。

 代码如下 复制代码

<form action = "checkbox.php" method = "get">
<input type="checkbox" name="fruit[ ]" value = "Apple">Apple</input><br />
<input type="checkbox" name="fruit[ ]" value = "Orange">Orange</input><br />
<input type="checkbox" name="fruit[ ]" value = "Mango">Mango</input><br />
<input type="submit" value="ok">


checkbox.php文件代码

 代码如下 复制代码

<?phpecho count($_GET["fruit"]),"<br />";
foreach ($_GET["fruit"] as $value)
{echo $value,"<br />";
}?>

输出结果是


如果你选择Orange和Mango


注明 $_GET不适合于大数据量的获取长度值是不能超过 100 个字符的。

原站原创教程转载须注明来源:http://www.111cn.net/phper/php.html

[!--infotagslink--]

相关文章

  • 轻松学习C#的基础入门

    轻松学习C#的基础入门,了解C#最基本的知识点,C#是一种简洁的,类型安全的一种完全面向对象的开发语言,是Microsoft专门基于.NET Framework平台开发的而量身定做的高级程序设计语言,需要的朋友可以参考下...2020-06-25
  • photoshop画斜线/直线/虚线的入门级教程

    这篇文章算是超级入门级别的了,我们下面来给各位介绍在photoshop画斜线/直线/虚线的教程了,希望下面这篇文章给你入门来帮助。 PS怎么画斜线 选择铅笔工具,或者画笔...2016-09-14
  • php上传图片学习笔记与心得

    我们在php中上传文件就必须使用#_FILE变量了,这个自动全局变量 $_FILES 从 PHP 4.1.0 版本开始被支持。在这之前,从 4.0.0 版本开始,PHP 支持 $HTTP_POST_FILES 数组。这...2016-11-25
  • Smarty模板学习笔记之Smarty简介

    1、简介Smarty是一个使用PHP写出来的模板PHP模板引擎,是目前业界最著名的PHP模板引擎之一。它分离了逻辑代码和外在的内容,提供了一种易于管理和使用的方法,用来将原本与HTML代码混杂在一起PHP代码逻辑分离。简单的讲,目...2014-05-31
  • 20分钟MySQL基础入门

    这篇文章主要为大家分享了20分钟MySQL基础入门教程,快速掌握MySQL基础知识,真正了解MySQL,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2016-12-02
  • PHP安装threads多线程扩展基础教程

    一、下载pthreads扩展下载地址:http://windows.php.net/downloads/pecl/releases/pthreads二、判断PHP是ts还是nts版通过phpinfo(); 查看其中的 Thread Safety 项,这个项目就是查看是否是线程安全,如果是:enabled,一般来说...2015-11-24
  • php Observer观察者模式之学习笔记

    当我们在星际中开地图和几家电脑作战的时候,电脑的几个玩家相当于结盟,一旦我们出兵进攻某一家电脑,其余的电脑会出兵救援。 那么如何让各家电脑知道自己的盟友被攻击了...2016-11-25
  • 编程新手必须掌握的:session与cookie的区别

    session和cookie是网站浏览中较为常见的两个概念,也是比较难以辨析的两个概念,但它们在点击流及基于用户浏览行为的网站分析中却相当关键。基于网上一些文章和资料的参阅,及作者个人的应用体会,对这两个概念做一个简单的阐述...2013-09-11
  • Flex网页布局基础入门及实例教程

    Flex是Flexible Box的缩写,意为"弹性布局",用来为盒状模型提供最大的灵活性。本教程我们来学习一下Flex布局的基本语法知识及运用实例。 网页布局(layout)是CSS的一...2016-09-14
  • 一文秒懂JavaScript DOM操作基础

    通过这篇文章帮助大家快速学习JavaScript DOM操作基础的相关知识,本文给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧...2021-04-30
  • 从零开始的html教程(7):html表单基础之一

    一聚教程网 从零开始的html教程(7),html表单的基础,零基础也能轻松学会html,希望大家喜欢 一、html的表单 表单负责网页中用户输入数据采集的功能,利用<form>标签来定...2016-12-31
  • PHP 日期函数 学习笔记介绍

    举一个简单的date例子 我将使用echo命令把内容输出到我们的客户端(浏览器)。我将使用下面的代码做为基础代码。 代码如下 复制代码 <!DOCTY...2016-11-25
  • python基础之局部变量和全局变量

    这篇文章主要介绍了python局部变量和全局变量,实例分析了Python中返回一个返回值与多个返回值的方法,需要的朋友可以参考下...2021-10-22
  • 详解Servlet入门级设置(超详细 IDEA2020版)

    这篇文章主要介绍了详解Servlet入门级设置(超详细 IDEA2020版),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-11-04
  • php入门教程(类实例教程)

    这里主要讲到关于在php教程类的调用,申请明,使用以前各种类的实例方法与操作过程,让你清楚的知道php类的construct destruct clone call wake sleep用法。 简单购物车...2016-11-25
  • Painter基础教程之图像水管分享

    今天小编在这里就来给Painter的这一款软件的使用者们来说下基础教程之图像水管,各位想知道的使用者们,那么下面就快来跟着小编一起看看吧。 给各位Painter软件的使...2016-09-14
  • MySQL的InnoDB引擎入门学习教程

    MySQL发展到今天,InnoDB引擎已经作为绝对的主力,除了像大数据量分析等比较特殊领域需求外,它适用于众多场景。然而,仍有不少开发者还在“执迷不悟”的使用MyISAM引擎,觉得对InnoDB无法把握好,还是MyISAM简单省事,还能支持快...2015-11-24
  • Android学习笔记之多界面切换实例

    一篇Android学习笔记之多界面切换实例,希望对各位朋友有所帮助。 用过VB 、 VC#的朋友都知道,在VB或VC#里要进行窗口(界面)切换很容易 例如在VB、C#里: 有 Fom1、...2016-09-20
  • php中的变量引用传值学习笔记

    引用:意思是将原始对象在内存中的地址传递给目标对象,就相当于原始对象和目标对象指向的是同一个内存地址。此时,如果对目标对象或者原始对象进行修改,内存中的数据也会改...2016-11-25
  • 阿里云ECS服务器入门使用流程(新手必看教程)

    这篇文章主要介绍了阿里云ECS服务器入门使用流程(新手必看教程),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-07-13