资源描述
详解php运行环境配置 php.ini配置及php基础讲解
1、 PHP变量及数据类型
1) $variable ,变量以字母、_开始,不能有空格
2) 赋值$variable=value;
3) 弱类型,直接赋值,不需要显示声明数据类型
4) 基本数据类型:Integer,Double,String,Boolean,Object(对象或类),Array(数组)
PHP片段四种表示形式。
标准tags:<?php ?>
short tags:<? ?> 需要在php.ini中设置short _open_tag=on,默认是on
asp tags: <% %>需要在php.ini中设置asp_tags=on,默认是off
script tags:<script language=”php”></script>
5) 特殊数据类型:Resourse(对第三方资源(如数据库)的引用),Null(空,未初始化的变量)
3、 操作符
1) 赋值操作符:=
2) 算术操作符:+,-,*,/,%(取模)
3) 连接操作符:. ,无论操作数是什么,都当成String,结果返回String
4) Combined Assignment Operators合计赋值操作符:+=,*=,/=,-=,%=,.=
5) Automatically Incrementing and Decrementing自动增减操作符:
(1)++$variable,-$variable,先++或-,再做其他操作
(2)$variable+=1 <=>$variable++;$variable-=1 <=>$variable-,跟c语言一样,先做其他操作,后++或-
6) 比较操作符:= =(左边等于右边),!=(左边不等于右边),= = =(左边等于右边,且数据类型相同),>=,>,<,<=
7) 逻辑操作符:|| ó or,&&óand,xor(当左右两边有且只有一个是true,返回true),!
4、 注释:
单行注释:// ,#
多行注释:/* */
5、 每个语句以;号结尾,与java相同
6、 定义常量:define(“CONSTANS_NAME”,value)
7、 打印语句:print,与c语言相同
8、 流程控制语句
1) if语句:
(1)if(expression)
{
//code to excute if expression evaluates to true
}
(2)if(expression)
{
}
else
{
}
(3)if(expression1)
{
}
elseif(expression2)
{
}
else
{
}
2) swich语句
switch ( expression )
{
case result
// execute this if expression results in result1
break;
case result
// execute this if expression results in result2
break;
default:
// execute this if no break statement
// has been encountered hitherto
}
3) ?操作符:
( expression )?returned_if_expression_is_true:returned_if_expression_is_false;
4) while语句:
(1) while ( expression )
{
// do something
}
(2)do
{
// code to be executed
} while ( expression );
5) for语句:
for ( initialization expression; test expression; modification expression ) {
// code to be executed
}
6) break;continue
9、 编写函数
1) 定义函数:
function function_name($argument1,$argument2,……) //形参
{
//function code here;
}
2) 函数调用
function_name($argument1,$argument2,……); //形参
3) 动态函数调用(Dynamic Function Calls):
<html>
<head>
<title>Listing 6.5</title>
</head>
<body>
<?php
function sayHello() { //定义函数sayHello
print "hello<br>";
}
$function_holder = "sayHello"; //将函数名赋值给变量$function_holder
$function_holder(); //变量$function_holder成为函数sayHello的引用,调用$function_holder()相当于调用sayHello
?>
</body>
</html>
4) 变量作用域:
全局变量:
<html>
<head>
<title>Listing 6.8</title>
</head>
<body>
<?php
$life=42;
function meaningOfLife() {
global $life;
/*在此处重新声明$life为全局变量,在函数内部访问全局变量必须这样,如果在函数内改变变量的值,将在所有代码片段改变*/
print "The meaning of life is $life<br>";
}
meaningOfLife();
?>
</body>
</html>
5) 使用static
<html>
<head>
<title>Listing 6.10</title>
</head>
<body>
<?php
function numberedHeading( $txt ) {
static $num_of_calls = 0;
$num_of_calls++;
print "<h1>$num_of_calls. $txt</h1>";
}
numberedHeading("Widgets"); //第一次调用时,打印$num_of_calls值为1
print("We build a fine range of widgets<p>");
numberedHeading("Doodads"); /*第一次调用时,打印$num_of_calls值为2,因为变量是static型的,static型是常驻内存的*/
print("Finest in the world<p>");
?>
</body>
</html>
6) 传值(value)和传址(reference):
传值:function function_name($argument)
<html>
<head>
<title>Listing 6.13</title>
</head>
<body>
<?php
function addFive( $num ) {
$num += 5;
}
$orignum = 10;
addFive( &$orignum );
print( $orignum );
?>
</body>
</html>
结果:10
传址:funciton function_name(&$argument)
<html>
<head>
<title>Listing 6.14</title>
</head>
<body>
<?php
function addFive( &$num ) {
$num += 5; /*传递过来的是变量$num的引用,因此改变形参$num的值就是真正改变变量$orignum物理内存中保存的值*/
}
$orignum = 10;
addFive( $orignum );
print( $orignum );
?>
</body>
</html>
结果:15
7) 创建匿名函数:create_function(‘string1’,’string2’); create_function是PHP内建函数,专门用于创建匿名函数,接受两个string型参数,第一个是参数列表,第二个是函数的主体
<html>
<head>
<title>Listing 6.15</title>
</head>
<body>
<?php
$my_anon = create_function( '$a, $b', 'return $a+$b;' );
print $my_anon( 3, 9 );
// prints 12
?>
</body>
</html>
8) 判断函数是否存在:function_exists(function_name),参数为函数名
10、 用PHP连接MySQL
1) 连接:&conn=mysql_connect("localhost", "joeuser", "somepass");
2) 关闭连接:mysql_close($conn);
3) 数据库与连接建立联系:mysql_select_db(database name, connection index);
4) 将SQL语句给MySQL执行:$result = mysql_query($sql, $conn); //增删改查都是这句
5) 检索数据:返回记录数:$number_of_rows = mysql_num_rows($result);
将记录放入数组:$newArray = mysql_fetch_array($result);
例子:
<?php
// open the connection
$conn = mysql_connect("localhost", "joeuser", "somepass");
// pick the database to use
mysql_select_db("testDB",$conn);
// create the SQL statement
$sql = "SELECT * FROM testTable";
// execute the SQL statement
$result = mysql_query($sql, $conn) or die(mysql_error());
//go through each row in the result set and display data
while ($newArray = mysql_fetch_array($result)) {
// give a name to the fields
$id = $newArray['id'];
$testField = $newArray['testField'];
//echo the results onscreen
echo "The ID is $id and the text is $testField <br>";
}
?>
11、 接受表单元素:$_POST[表单元素名],
如<input type=text name=user>ó$_POST[user]
接受url中queryString中值(GET方式):$_GET[queryString]
12、转向其他页面:header("Location: ");
13、字符串操作:
1)explode(“-”,str)óJava中的splite
2)str_replace($str1,$str2,$str3) =>$str1要查找的字符串,$str2用来替换的字符串,$str3从这个字符串开始查找替换
3)substr_replace:
14、session:
1)打开session:session_start(); //也可以在php.ini设置session_auto_start=1,不必再每个script都写这句,但是默认为0,则必须要写。
2)给session赋值:$_SESSION[session_variable_name]=$variable;
3)访问session:$variable =$_SESSION[session_variable_name];
4)销毁session:session_destroy();
15、显示分类的完整例子:
<?php
//connect to database
$conn = mysql_connect("localhost", "joeuser", "somepass")
or die(mysql_error());
mysql_select_db("testDB",$conn) or die(mysql_error());
$display_block = "<h1>My Categories</h1>
<P>Select a category to see its items.</p>";
//show categories first
$get_cats = "select id, cat_title, cat_desc from
store_categories order by cat_title";
$get_cats_res = mysql_query($get_cats) or die(mysql_error());
if (mysql_num_rows($get_cats_res) < 1) { //如果返回记录行数小于1,则说明没有分类
$display_block = "<P><em>Sorry, no categories to browse.</em></p>";
} else {
while ($cats = mysql_fetch_array($get_cats_res)) { //将记录放入变量$cats中
$cat_id = $cats[id];
$cat_title = strtoupper(stripslashes($cats[cat_title]));
$cat_desc = stripslashes($cats[cat_desc]);
$display_block .= "<p><strong><a
href="$_SERVER[PHP_SELF][U1] ?cat_id=$cat_id">$cat_title</a></strong>//点击此url,刷新本页,第28行读取cat_id,显示相应分类的条目
<br>$cat_desc</p>";
if ($_GET[cat_id] == $cat_id) { //选择一个分类,看下面的条目
//get items
$get_items = "select id, item_title, item_price
from store_items where cat_id = $cat_id
order by item_title";
$get_items_res = mysql_query($get_items) or die(mysql_error());
if (mysql_num_rows($get_items_res) < 1) {
$display_block = "<P><em>Sorry, no items in
this category.</em></p>";
} else {
$display_block .= "<ul>";
while ($items = mysql_fetch_array($get_items_res)) {
$item_id = $items[id];
$item_title = stripslashes($items[item_title]);
$item_price = $items[item_price];
$display_block .= "<li><a
href="showitem.php?item_id=$item_id">$item_title</a>
</strong> ($$item_price)";
[U2] }
$display_block .= "</ul>";
}
}
}
}
?>
<HTML>
<HEAD>
<TITLE>My Categories</TITLE>
</HEAD>
<BODY>
<? print $display_block; ?>
</BODY>
</HTML>
16、PHP连接Access:
<?
$dbc=new com("adodb.connection");
$dbc->open("driver=microsoft access driver (*.mdb);dbq=c:member.mdb");
$rs=$dbc->execute("select * from tablename");
$i=0;
while (!$rs->eof){
$i+=1
$fld0=$rs->fields["UserName"];
$fld0=$rs->fields["Password"];
....
echo "$fld0->value $fld1->value ....";
$rs->movenext();
}
$rs->close();
?>
1. 安装php运行环境
密码:$boss$或briup
超级用户下键入命令:
2. /opt/lampp/lampp start
打开浏览器:输入localhost .在htdocs目录下创建一个目录叫ld1102.在该目录下创建第一个php文件文件名叫:test.php
3.找到/opt目录
lammp
htdocs
htdocs目录为php文件存放的目录。即web应用软件的目录,当前浏览器输入localhost的时候,其实找到的就是hidocs,只是在执行的时候,将该文件通过apache软件进行里部署和运行
提醒:以后所有的测试,都是在浏览器键入localhost然后加上文件夹的名字或者文件的名字
举例:
比如在htdocs目录下有个已经生成好的应用包叫test,该文件夹下有个文件叫test.php
那么在运行test.php文件的时候的浏览器地址为localhost/test/test.php4.修改htdocs目录的权限
su
chomd 777 htdocs
3.php文件的创建
1>文件的后缀名以.php结束
2>php代码必须写在php的标记中
php的标记有四种风格:
常用:开始:<?php
结束:?>
其他:
<? ?>
<% %>
<script
language="PHP"></script>
<% %>
3>php文件的组成内容
1》可以直接写成html代码
2》php标记
3》php语句
4》空格
5》注释:所谓注释就是给代码进行说明文字,本身在代码执行的时候没有任何意义,仅仅作为代码阅读的诠释者。
php中的注释有三种:
单行注释有两种
6 //:表示出现在该符号后面的张行内容为注释内容
#:c语言的单行注释风格,意义跟//一样
多行注释一种
/*
注释内容
注释内容
*/
表示出现在该符号中间的多行内容为注释内容
7.echo
语法:echo “内容”;或者echo ‘内容’
内容:可以直接写html语言
意义:将该内容使出到浏览器进行显示
8.每行代码完成以“;”结束
9.变量:
所谓变量,就是存放数据的容器,该容器里面的数据可以变化。
变量的申明语法:
$变量名
变量名又称一种标识符,标识符在定义的时候有三个要求:
1》必须为字母、数字或者下划线组成
2》不能以数字开始
3》大小写敏感(区分大小写)
变量的赋值语(变量初始化)法:
$变量名=变量值
=为赋值符号。该语法表示。将=后面的值存放到=前面的变量中
变量调用语法:
$变量名
练习:
<?php
$a ="briup";
echo "欢迎来到$a,谢谢<br>";
echo '欢迎来到$a,谢谢<br>';
echo "欢迎来到$a学习<br>";
echo "欢迎来到{$a}学习<br>";
echo "欢迎来到${a}学习<br>";
?>
注意:
1》双引号里面出现的变量,使用的是变量的值,但是变量名后面不能直接跟上标识符命名的字符
2》单引号里面出现的变量,不能当作变量使用,只当作普通的字符串使用
3》$a学习其实该变量的名字为a学习,该变量没有存放任何值。随意显示为空
4》变量在""中使用的完整语法是{$变量名}或者${变量名}
10.php代码所从上至下一行一行代码执行的
11.php数据类型
(1)基本数据类型
整形(Integer)类似与0 1 2 -1 -2,也就是数学中所说的整型那个数据(简写int)
浮点型(Float)就是数学中所说的小数类型
字符型(String)字符串,在使用字符类型数据源的时候和,必须放到单引号或者双引号当中,或者定界符中
定界符:php对于字符型数据的规范符号,表示放到该符号中的数据为字符类型数据
定界符的语法:
<<<定界名
字符串
(顶行)定界名;
通常定界符用于字符串相对校对的数据,如书籍的序
注意:出现在单引号或者双引号中的数据通常都是字符串类型。
如 1 表示整型而“1”表示字符类型
true表示布尔型,‘true’则表示四个字符的字符类型
布尔型(Boolean)又称真假类型,该类型只有两个取值,一个是ture,一个是false。不区分大小写。
(2)复合数据类型
数组型
对象型
(3)特殊数据类型
null类型
资源类型
12.类型强度:
php的弱数据类型,根据值类确定数据类型。不需要再申明变量的时候给变量定义一个数据类型
13.数据转换
在实际的应用中,有时候要将一个数据类型变成另外的数据类型,从而操作该数据类型所特有的一些操作。
语法:
(强转类型关键词)原数据类型变量或者值
例如:
$a ="1.1";
$a =(int)$a;
echo$a;
注意:浮点型或者字符串的小数在转换成整型的时候,直接省去小数点后面的数字。
14.可变变量:变量的名字不确定,需要根据另外一个变量的值确定而确定
语法:
$变量名 =“可变变量的名字”;
$$a =“变量值”
例如:$a ="name";
$$a ="value";
等价:
$a =“value”;
15.常量:只能当且仅当保存一次数据,只能保存基本数据类型的值
语法:define(can1,can2);
can1:常量的名字 字符型
can2:常量的名字 基本数据类型
如:
define("A",100);
表示定义了一个常量叫A,该常量保存了一个值,为整型的100
使用语法:直接使用常量的名字即可
如
echo A;
(常用名通常大写)
16.操作符:
1>算数操作符
+ - * / %:分别为加减乘除余
如果需要将除法运算的两部分的值精确度的取得。
商取得的语法:
$a = (int)数字/数字
余数取得的语法:
$b = 数字%数字
2》字符串操作符
. 将符号前后的两个字符串连接起来。如果,前后的数据不是字符类型,php将进行自动的数据类型转换,转换成字符类型,然后进行连接操作
$a = “abcd“;
$b = "efgh";
$c = $a.$b;
echo $c;
3》赋值操作符和复合赋值操作符=:赋值操作符
+= -= *= /= %= .=:都值复合赋值操作符号,表示的意义如下例:
$a = 100;
$a += 100;
等价:
$a = 100;
$a = $a+100;
即将复合赋值操作符前面的变量进行+-*/.后面的值运算以后再赋还给该变量
4》递增或者递减
++:表示递增,加1
--:表示递减,减一
例如:
$a = 100;
$a++;
echo $a;
++和--符号可以出现在变量的前面也可以出现在变量的后面,两者都能进行递增或者递减操作。但是,当递增和递减跟其他运算综合应用的时候,有个执行顺序
例如:
$a = 100;
$b = $a++;
echo $a;
echo $b;
$a = 100;
$b = ++$a;
echo $a;
echo $b;
注意:++ --放到变量后面,表示先进行该语句当中的其他运算(如赋值运算),在进行变量的
5.引用操作符
变量引用:表示一个变量的产生所另外一个变量的引用
语法:
$a = &$b;
意义:两个变量通知指向一个内存块。达到同步的效果。
例如:
$a = 100;
$b = &$a;
$a++;
echo $b;
$b++;
echo $a;
练习:
$a = 100;
$b = &$a;
$b++;
$c = &$b;
$c++;
echo $a."<br>";
echo $b."<br>";
echo $c."<br>";
6》表操作符
意义:运用比较操作符号,比较前后两个值,是否符合操作符的含义,满足返回true,不满足返回false(布尔类型的值)。
==:比较两个值是否相等
===:比较两个值是否恒等,值相等且数据类型相等
例如:
1==“1”返回true
1===“1”返回false
!=:不相等
!==:不恒等
<:小于
>:大于
<=:小于等于
>=:大于等于
<>:不相等
7》逻辑操作符
!:非逻辑
&& and:且逻辑
|| or:或逻辑
注意:&& || 的优先级高于 and or
8》位操作符
所谓位操作就是将操作的数值转换成2进制的实质进行操作
&:按位与运算,表示将符号前后的两个值转换成2进制,按位与,当且仅当相同位都为1的时候返回1,反之则返回0
如:12&7
运算如图:12:00001100
&
7:00000111
----------------
:00000100
即结果为:4
|:按位或操作,将操作符前后的两个值转换成二进制进行按位或操作,当且仅当相同位都为0时返回为0,反之则返回1
如:12|7
运算如图:12:00001100
|
7:00000111
----------------
:00001111
即结果为:15
~:按位非,表示将值取相反数减一。
如:~12
运算如下:-12-1
所以结果为:-13
^:按位异或,表示将符号前面的两个值转换成二进制进行按位异或操作,当且仅当相同位有1,但不全为1的时候返回1,反之则返回0.
如:12^7
运算如图:12:00001100
^
7:00000111
----------------
:00001011
即结果为:11
<<:位左移。将<<前面值转换成2进制向左移动<<后面的位数
如:12<<3
运算如下:12:00001100
<<3
结果:01100000
即结果为:96
运算总计:数值*2的移动位数次方
12*2的三次方
>>:位右移运算,将>>前面自己转换成二进制向右移动>>后面的位数
如:12>>1
运算如下:12:00001100
>>1
结果:00000110
即结果为:6
运算总计:数值/2的移动位数次方
12/2的1次方
9》其他操作符
?:三项式操作符
语法:表达式1?表达式2?表达式3?
意义:判断表达式1是否为真,如果为真,执行表达式2,如果为假,执行表达式3
如:1==1? $a="1等于1“:$a=“1不等于1“;
echo $a;
@:错误屏蔽操作符
将表达式的错误提示信息直接忽略,不显示到浏览器上
如:$a =1/0;
执行代码,将在页面出现一个警告提示信息
@$a=1/0;
执行代码,没有信息显示
``:终端代码执行符号
逆引号里面的内容为终端执行的代码
17.代码块:
放在{}中的代码,我们称这样的结果为代码块
18.条件控制语句
if语句
语法:if(表达式1){
代码块1
}else if(表达式2){
代码块2
}else if(表达式3){
代码块3
}...
else{
else代码块
}
完整的if条件控制语句由三个部分组成,一个if子句,多个else if子句,一个else子句。
else if子句和else子句可以没有
执行逻辑:
首先判断if子句中的表达式是否为真,为真执行if子句的代码块,代码块执行结束,if控制结束,反之往下执行else if子句,如果else if子句中的表达式满足,则执行else if该子句的代码块,执行完毕,if控制结束。以此类推,else子句执行的前提是前面if子句和所有的else if子句的表达式都不满足执行else子句的代码块。
19.代码块中的代码只有一行代码的时候,{}可以省略。将自动被上个控制语句控制
20.switch分支结构条件控制语句
语法:
switch(表达式){
case value1:
代码块1
break;
case value2:
代码块2
break;
.....
default:
代码块
}
执行逻辑:判断switch子句中的表达式(通常为一个变量)的值,如果满足case后面的其中一个,当且仅当执行该case value:后面的代码块,直至遇到break结束switch语句,如果case后面的值都不满足,将执行default:后面的代码块直至结束switch语句,如果case后面的值都不满足,将执行default:后面的代码块直至结束switch语句
21.for循环操作
所 谓循环操作就是相同的代码块被多次执行
语法:
for(can1;can2;can3){
代码块
}
can1:循环参照变量初始化
for循环开始即被执行
can2:循环参照变量表达式
每次执行循环操作时都先判断该表达式的真假,为真才执行{}中的代码块。为假则结束for循环
can3:循环参照变量变化表达式
每执行一个代码块以后,将自动运行该表达式改变参照变量的值
执行逻辑:
首先初始化can1,然后第一次判断can2是否为真,为真执行第一次循环体(代码块)执行完成以后执行can3表达式,
再第二次判断can2是否为真,为真再次执行循环体(代码块),执行完成以后执行can3表达式,再判断can2是否为真,
周而复始,直至can2不满足的时候,for循环结束。
22.逻辑控制语句之间可以相互嵌套
2
展开阅读全文