php编程 之 php基础一

1,语法

PHP 脚本在服务器上执行,然后将纯 HTML 结果发送回浏览器。PHP 文件通常包含 HTML 标签和一些 PHP 脚本代码

比如下面这个:这是一个简单的 PHP 文件实例,它可以向浏览器输出文本 "Hello World!"

<!DOCTYPE html> 
<html> 
<body> 
<h1>My first PHP page</h1> 
<?php 
echo "Hello World!";
?>     //print也可以表示输出,//表示注释,和#用于注释是一样的。
</body> 
</html>

注意:PHP 中的每个代码行都必须以分号结束。分号是一种分隔符,用于把指令集区分开来。

规则:

  1,PHP 脚本以 <?php 开始,以 ?> 结束

  2,echo 和print都可以表示在浏览器中输出文本

  3,//单行注释,/* 多行注释*/。

2,变量  

<?php
$x=5;
$y=6;
$z=$x+$y;
echo $z;
?>

规则:

  1,$后紧跟变量,变量名必须以字母或者下划线字符开始,变量名可以包含:数字,字母和下划线,字母区分大小写

  2,变量用等号赋值,变量在第一次被声明的时候就被创建了。

  3,我们不必向 PHP 声明变量的数据类型。PHP 会根据变量的值,自动把变量转换为正确的数据类型。当然,赋值字符串变量的时候还是需要加引号,比如

<?php
$txt="Hello world!";
$x=5;
$y=10.5;
?>

3,作用域

<!DOCTYPE html> 
<html> 
<body> 
<?php 
$x=5;    //这是函数以外的全局变量
function myTest()
{
    global $x;    //函数内部想要访问的时候还需要global一下,否则不予显示
    $y=10;
    echo "test result:";
    echo "$x";    //换行符是<br>如果不加换行符,默认连续输出,就像:510hello dahu!
    echo "$y";
}
myTest();    //调用函数
echo "Hello dahu!"; 
?> 
</body> 
</html>

拓展:PHP 将所有全局变量存储在一个名为 $GLOBALS[index] 的数组中。 index 保存变量的名称。这个数组可以在函数内部访问,也可以直接用来更新全局变量。

4,static作用域

当一个函数完成时,它的所有变量通常都会被删除。然而,有时候您希望某个局部变量不要被删除。那就要用static标志一下这个变量。

<?php 
function myTest()
{
    static $y=10;    //声明一下,希望函数结束的时候$y的值得以保存,
//以便下次再调用这个函数的时候,$y在上一次运行的基础上继续
$x=5; echo $x; //每次调用的时候$x都是新的,都是5 echo $y; //$y被调用了三次,每次的值分别是:10,11,12 $y++; } myTest(); myTest(); myTest(); ?>

注意:该函数依然是局部变量,它不会成为全局变量,再一次调用myTest函数时,$y的值会在上一次调用的基础上继续使用。

5,参数

参数的作用是通过调用代码把值传递给函数,是一个局部变量。

<?php 
function myTest($x)
{
    echo $x; 
}
myTest("hello dahu!");
?> 

6,echo和print

echo和print都是输出的,区别在于echo可以输出一个或者多个字符串,速度比较快,而print智能输出一个字符串,而且返回值总是为1;

<?php 
$y="hello daqing";
$x="hi dahu";
$z=666;
echo $y,$x,$z,"<br>";
//print $y,$x,$z,"<br>";  print只能输出一个字符串
echo "let me echo $y <br>";
print "let me echo $y <br>";
?> 

7,PHP EOF(heredoc)使用说明

PHP EOF(heredoc)是一种在命令行shell(如sh、csh、ksh、bash、PowerShell和zsh)和程序语言(像Perl、PHP、Python和Ruby)里定义一个字串的方法。

<?php 
$y="hello daqing";
$a=<<<EOF
<br>
<html><title>untitled document</title>
echo $y    //输出形如:echo hello daqing
hello,{$y}    //输出形如:hello,hello daqing
EOF;
echo $a
?> 
<?php
$name="runoob";
$a= <<<EOF
"abc" $name    //输出形如:"abc" runoob
"123"
EOF;
// 结束需要独立一行且前后不能空格
echo $a;
?>
<?php
echo <<<EOF
<h1>我的第一个标题</h1>
<p>我的第一个段落。</p>
EOF;
// 结束需要独立一行且前后不能空格
?>

//输出结果:

我的第一个标题

我的第一个段落

注意:上面三行代码的注释部分是后来添加的,不要带着注释去运行

EOF语法:

  1,开始标志:“<<<EOF”后面不加任何东西,包括空格,结束“EOF;”独占一行,没空格。

  2,位于开始标记和结束标记之间的变量可以被正常解析,但是函数则不可以。

  3,.heredoc常用在输出包含大量HTML语法d文档的时候。比如:函数outputhtml()要输出HTML的主页,就可以写成如下格式:(注意,EOF内的html可以被解析。)

function outputhtml()
{
echo <<<EOT
   <html>
   <head><title>主页</title></head>
   <body>主页内容</body>
   </html>
EOT;
}
outputhtml();

 8,数据类型

String(字符串), Integer(整型), Float(浮点型), Boolean(布尔型), Array(数组), Object(对象), NULL(空值)。

测试函数: var_dump() 函数返回变量的数据类型和值。(如果是八进制或者16进制的整数,会自动换算成十进制)

<?php
$s='lala';
var_dump($s);
echo "<br>";
$x=234;
var_dump($x);
?>

我的结果是:C:\xampp\htdocs\daqing_new\daqing_test.php:7:string 'lala' (length=4)

                         C:\xampp\htdocs\daqing_new\daqing_test.php:10:int 234

详解:

  1,字符串,放在单双引号里,

  2,整数型,要有数字没有小数点,可正可负,三种格式:十进制,十六进制(0x为前缀),或者八进制(0为前缀)

  3,浮点数,支持科学计数,如:2.4e3=2.4*10的3次方,8E-5=8*10的负5次方

  4,布尔型,$x=true 或者false,通常用于条件判断

  5,数组,array,一组同类型的集合

<?php
$cars=array("Volvo","BMW","Toyota");
var_dump($cars);    //输出array (size=3)等详细信息
echo $cars[0] //数组的下标从0开始
?>

  6,对象,对象数据类型也可以用于存储数据。在 PHP 中,对象必须声明。必须使用class关键字声明类对象。类是可以包含属性和方法的结构,我们在类中定义数据类型,然后在实例化的类中使用数据类型。

<?php
class Person {
    //人的成员属性
    var $name;    //人的名字
    var $age;    //人的年龄

    //人的成员 say() 方法
    function say() {
        echo "我的名字叫:".$this->name."<br>";    //相当于python中的self.name
        echo "我的年龄是:".$this->age;
    }
}    //类定义结束

//实例化一个对象,记得类名前面加上new
$p1 = new Person();
//给 $p1 对象属性赋值
$p1->name = "张三";   //相当于python中的,实例名.类属性名的那种格式
$p1->age = 20;
//调用对象中的 say()方法
$p1->say();
?>

  7,null:NULL 值表示变量没有值。

9,常量

常量值被定义后,在脚本的其他任何地方都不能被改变。一个常量由英文字母、下划线、和数字组成,但数字不能作为首字母出现。 (常量名不需要加 $ 修饰符)。

语法:使用函数define()

define ( string $name , mixed $value [, bool $case_insensitive = false ] )

define()的三个参数分别是name,value, 大小写敏感(case_insensitive,默认区分大小写,默认false,如果设置成true,那就表示大小写不区分)

实例:

<?php
// 区分大小写的常量名
define("GREETING", "欢迎访问 daqing.com",true);
echo GREETING;    // 输出 "欢迎访问 daqing.com"
echo '<br>';
echo greeting;   // 输出"欢迎访问 daqing.com",不区分大小写
?>

 注意,常量是全局变量,在函数内部也可以毫无障碍的使用。

10 字符串相关的函数:

字符串的运算符:.  并置运算符。

实例:

<?php
$txt1="hello";
$txt2="daqing!";
echo $txt1." ".$txt2;    //txt1和空格并置,然后和txt2并置
?>
//结果:hello daqing!

字符串长度函数:strlen()

实例:

<?php
$txt1="hello";
$txt2="daqing!";
echo strlen($txt1);    //返回长度5
?>

字符串查找函数:strpos()

strpos() 函数用于在字符串内查找一个字符或一段指定的文本。如果在字符串中找到匹配,该函数会返回第一个匹配的字符位置。如果未找到匹配,则返回 FALSE。

实例:

<?php
$txt1="hello";
echo strpos($txt1,'e');
?>
//返回‘e'所在的位置1。

11 运算符

基本运算符:+,-,*,/,%,.,加减乘除取余,并置。

注意,它的除法不是地板除。php7版本新增了整除函数,intdiv(),用法:echo (intdiv(10,3));

实例:

<?php
$x=10;
$y=6;
echo ($x + $y); // 输出16
echo '<br>'; // 换行
echo ($x - $y); // 输出4
echo '<br>'; // 换行
echo ($x * $y); // 输出60
echo '<br>'; // 换行
echo ($x / $y); // 输出1.6666666666667
echo '<br>'; // 换行
echo ($x % $y); // 输出4
echo '<br>'; // 换行
echo -$x; //输出-10
?>

赋值运算符:和python差不多

运算符等同于描述
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 模(除法的余数)
a .= b a = a . b 连接两个字符串

实例:

<?php
$x=10;
echo $x; // 输出10
$y=20;
$y += 100;
echo $y; // 输出120
$z=50;
$z -= 25;
echo $z; // 输出25
$i=5;
$i *= 6;
echo $i; // 输出30
$j=10;
$j /= 5;
echo $j; // 输出2
$k=15;
$k %= 4;
echo $k; // 输出3
?>

递增/递减运算符:

运算符名称描述
++ x 预递增 x 加 1,然后返回 x
x ++ 后递增 返回 x,然后 x 加 1
-- x 预递减 x 减 1,然后返回 x
x -- 后递减 返回 x,然后 x 减 1

实例;

<?php
$t=10;
echo ++$t;  //$t是递增的,$t每次+1赋值给自己。返回11
echo "<br>";
$s=10;
echo --$s;  //$t是递减的,每次-1赋值给自己,返回9
?>

比较运算符:

运算符名称描述实例
x == y 等于 如果 x 等于 y,则返回 true 5==8 返回 false
x === y 绝对等于 如果 x 等于 y,且它们类型相同,则返回 true 5==="5" 返回 false
x != y 不等于 如果 x 不等于 y,则返回 true 5!=8 返回 true
x <> y 不等于 如果 x 不等于 y,则返回 true 5<>8 返回 true
x !== y 绝对不等于 如果 x 不等于 y,或它们类型不相同,则返回 true 5!=="5" 返回 true
x > y 大于 如果 x 大于 y,则返回 true 5>8 返回 false
x < y 小于 如果 x 小于 y,则返回 true 5<8 返回 true
x >= y 大于等于 如果 x 大于或者等于 y,则返回 true 5>=8 返回 false
x <= y 小于等于 如果 x 小于或者等于 y,则返回 true 5<=8 返回 true

实例:

<?php
$x=100;
$y="100";
var_dump($x == $y);  //返回true
echo "<br>";
var_dump($x === $y);  //绝对等于,如果 x 等于 y,且它们类型相同,则返回 true,执行结果false
echo "<br>";
var_dump($x != $y);  //返回false
echo "<br>";
var_dump($x !== $y);    //返回true,绝对不等于还要判断他们的类型是否相同
echo "<br>";
$a=50;
$b=90;
var_dump($a > $b);  //返回false
echo "<br>";
var_dump($a < $b);  //返回true
?>

 逻辑运算符:

 数组运算符:

运算符名称描述
x + y 集合 x 和 y 的集合
x == y 相等 如果 x 和 y 具有相同的键/值对,则返回 true
x === y 恒等 如果 x 和 y 具有相同的键/值对,且顺序相同类型相同,则返回 true
x != y 不相等 如果 x 不等于 y,则返回 true
x <> y 不相等 如果 x 不等于 y,则返回 true
x !== y 不恒等 如果 x 不等于 y,则返回 true

实例:

<?php
$x = array("a" => "red", "b" => "green");
$y = array("c" => "blue", "d" => "yellow");
$z = $x + $y; // $x 和 $y 数组合并
var_dump($z);  //数组不好打印,用var_dump()看吧
var_dump($x == $y);
var_dump($x === $y);
var_dump($x != $y);
var_dump($x <> $y);
var_dump($x !== $y);
?>
//返回值依次是:
//array(4) { ["a"]=> string(3) "red" ["b"]=> string(5) "green" ["c"]=> string(4) "blue" ["d"]=> string(6) "yellow" }

//bool(false) bool(false) bool(true) bool(true) bool(true)

三元运算符

语法:

(expr1) ? (expr2) : (expr3) 

意思是:expr1 值为 TRUE 时执行 expr2,expr1 求值为 FALSE 时执行 expr3。

实例:

<?PHP
$a=10; $b=20;
$c=$a>$b?($a-$b):($a+$b);
//说明:如果变量a大于变量b则执行问号后面的,否则就执行:冒号后面的
echo $c;
?>

当然写得长一点也没问题,比如:$a>$b ? $x=($a<$c ? $c-$a : $a-$c) : $x=($b<$c ? $c-$b : $b-$c);

组合比较符:

语法:$a<=>$b
如果$a > $b, 返回的值为1 
如果$a == $b, 返回的值为0 
如果$a < $b, 返回的值为-1

组合比较符也适用于字符串,字符串比较的时候,b大于a。和python一样。

运算优先级表:

下表按照优先级从高到低列出了运算符。同一行中的运算符具有相同优先级,此时它们的结合方向决定求值顺序。

  说明:运算的时候,左 = 从左到右,右 = 从右到左。

运算方向运算符附加信息
clone new clone 和 new
[ array()
++ -- ~ (int) (float) (string) (array) (object) (bool) @ 类型和递增/递减
instanceof 类型
! 逻辑运算符
* / % 算术运算符
+ – . 算术运算符和字符串运算符
<< >> 位运算符
== != === !== <> 比较运算符
& 位运算符和引用
^ 位运算符
| 位运算符
&& 逻辑运算符
|| 逻辑运算符
? : 三元运算符
= += -= *= /= .= %= &= |= ^= <<= >>= => 赋值运算符
and 逻辑运算符
xor 逻辑运算符
or 逻辑运算符
, 多处用到

括号的使用:

  在php中,运算的时候,括号优先运算。

posted @ 2018-09-04 16:20  0点0度  阅读(358)  评论(0编辑  收藏  举报