PHP之路 PHP核心语法【第二篇】PHP基本语法

1.PHP 标记

以<?php开始和以?>结束标记是标准风格,这是PHP推荐使用的标记风格。

以<scriptlanguage="php">开始和<script>结束是长风格标记,这种标记最长,总是可用的,但我们并不常用。

以<?开始和以?>结束标记是简短风格的标记,是最简单的,但是系统管理员偶尔会禁用掉它,因为它会干扰XML文档的声明。只用通过php.ini配置文件中的指令short_open_tag打开后就可以使用。

以<%开始和以%>结束标记是ASP风格的标记,可以在php.ini配置文件设定中启用了asp_tags选项就可以使用它(默认是禁用的),习惯了ASP风格的可以使用它。

注意:修改php.ini要重启Apache才会生效

长风格标记

短风格标记

ASP风格标记 

 

2.指令分隔符

在php中每条语句使用分号结束的。也就是分号是php语句之间的分割符(分号一般紧跟在指令尾部)。

注意: 在每个脚本中,最后一条语句后可以没有分号结束。

3.程序注释

单行注释  // # 

多行注释 /**/

 

4.变量

变量的声明与使用

php是一个弱类型语言。
变量的命名规范:变量是以$符开始定义的,
变量名的规则:由字母、数字、下划线构成,不可以使用数字开头。
在php中变量名是区分大小写

获取和判断变量类型

gettype is

<?php
$string='abcdef';
echo gettype($string); //string
echo is_string(intval($string));  //1

可变变量与引用传值

<?php
    $a = 'hello';            //普通变量
    $$a = 'world';            //可变变量
    echo "$a ${$a}";        //输出:hello world

    echo "<hr>";
    echo "$a $hello";        //输出:hello world

    echo "<hr>";
    $i='j';
    $j='k';
    $k='hello world';
    echo $$$i;   //输出:hello world
?>
可变变量
<?php
    $a=5;
    $b=&$a;
    echo $b;    //输出5
    $a=7;
    echo $b;    //输出7
?>
引用传值

5.数据类型

种类

*在php中共计有8种基本数据类型:
	4种标量类型:
		整数(int)、浮点数(float/double)、布尔值(boolean)、字串(string)
	2种复合类型:
		数组(array)、 对象(object)
	2种特殊类型:
		资源(resource)、 空(NULL)

其中:对象和资源类型属于引用类型,其他都属于值类型。

查看类型

is_bool():判断是否是布尔型
is_int()、is_integer()和is_long():判断是否为整型。
is_float()、is_double()和is_real():判断是否为浮点型
is_string():判断是否为字符串
is_array():判断是否为数组
is_object():判断是否为对象
is_resource():判断是否为资源类型
is_null():判断是否为null
is_scalar():判断是否为标量
is_numeric():判断是否是任何类型的数字和数字字符串
is_callable():判断是否是有效的函数名
函数:bool settype ( mixed var, string type )是将变量 var 的类型设置成 type。 
变量类型的测试函数

类型详解

<?php
//整数类型:int(integer)
//十进制: 0 1 2 3 4 5 6 7 8 9
//八进制: 0 1 2 3 4 5 6 7
//十六进制 0 1 2 3 4 5 6 7 8 9 a b c d e f

echo 10; //输出十进制的值10

echo "<br/>"; //输出换行

echo 010; //输出八进制的值8

echo "<br/>"; //输出换行

echo 0x10; //输出十六进制的值16

//在php中整数占4个字节:32位。
echo "<br/>"; //输出换行


//输出整数的二进制
//printf("%b",-2147483648); //最小负数:10000000000000000000000000000000  
//printf("%b",2147483647); //最大整数: 01111111111111111111111111111111  
printf("%b",-1); //最大负整数:         11111111111111111111111111111111  

echo "<br/>"; //输出换行

$a=2147483647;
var_dump($a);
$a++; //自增一个
var_dump($a);
整数类型(int)
<?php
header("Content-Type: text/html;charset=utf-8");
//php中的浮点类型(float/double):

$f = 12.4;
var_dump($f); //float(12.4)

echo 1.345E4; //13450 //科学计数法

echo "<br/>";

//计算机中浮点类型的计算会有精度损耗。
if((0.1+0.7)==0.8){
    echo "(0.1+0.7)和0.8相等";
}else{
    echo "(0.1+0.7)和0.8不相等";
}

echo 0.1+0.7;

echo "<br/>";


if((0.3+0.2)==0.5){
    echo "相等";
}else{
    echo "不相等";
}
浮点类型(float/double)
<?php
header("Content-Type: text/html;charset=utf-8");
//php中的字串类型
//在php中定义字串的方式一共有四种写法:单引号、双引号、定界符(带单引号和不带)。

$s = 'abc';
var_dump($s); //string(3) "abc" 

$s = "zhangsan";
var_dump($s); //string(3) "abc" 

echo "<hr/>";
//单引号和双引号定义字串的区别:

$a=10;
echo '$a kg'; //单引号不支持变量解析 $a kg
echo "$a kg"; //双引号支持变量解析 10 kg
echo "{$a}kg"; //双引号中的变量使用{}包括起来解析 10kg

echo "<br/>";

echo 'hello\' \\php!'; //单引号中可以转义\'和\\
echo "he\$llo\" \\php\n!"; //双引号中可以转义\" \\ \$ \n \t \r ...
echo "<br/>";


echo "<hr/>";

//使用定界符定义字串(这种定界符中可以使用变量)
$str = <<<mystr
<ul class="lh">
    <li><a href="/1316-1381.html">面部护肤</a></li>
    <li><a href="/5025-5026.html">瑞士名表</a></li>
    <li><a href="/1316-1387.html">彩妆香水</a></li>
    <li><a href="/5025-5027.html">国产名表</a></li>
    <li><a href="/1316-1386.html">洗发护发</a></li>
    <li><a href="/5025-5029.html">时尚腕表</a></li>
    <li><a href="/1316-1383.html">身体护肤{$a}</a></li>
</ul>
mystr;

echo $str;

echo "<hr/>";

/*使用定界符定义字串(带单引号的定界符,这种定界符中不可以使用变量)
$str = <<<'mystr'
<ul class="lh">
    <li><a href="/1316-1381.html">面部护肤</a></li>
    <li><a href="/5025-5026.html">瑞士名表</a></li>
    <li><a href="/1316-1387.html">彩妆香水</a></li>
    <li><a href="/5025-5027.html">国产名表</a></li>
    <li><a href="/1316-1386.html">洗发护发</a></li>
    <li><a href="/5025-5029.html">时尚腕表</a></li>
    <li><a href="/1316-1383.html">身体护肤{$a}</a></li>
</ul>
mystr;

echo $str;
*/
字符串类型(string)
<?php
//其他的数据类型:数组array 对象object 资源resource

//数组的定义和使用
$a=array(10,20,30,'aa'); //将三个值以数组方式赋给变量a
echo $a[1]; //输出第二个值 20
var_dump($a);

echo "<hr/>";

//类的定义和对象使用
//定义一个类(类中有两个属性,一个方法(功能))
class Person{
    public $name="张三";
    public $age=20;
    public function getinfo(){
        return $this->name.":".$this->age;
    }
}

//将类实例化成一个对象
$ob = new Person();
echo $ob->getinfo(); //使用对象输出信息
var_dump($ob);

echo "<hr/>";

//资源类型:
$f = fopen("a.txt","a");
var_dump($f);
fwrite($f,"aaa");
其他的数据类型(array object resource)
<?php
//数据的空类型NULL:

var_dump($a); //输出一个不存在的变量为null

$b=10;
var_dump($b);
unset($b);  //执行unset销毁的变量为null
var_dump($b);

$c=20;
var_dump($c);
$c=null;    //将变量值赋值为null时值为null
var_dump($c);


 
空类型NULL

 

字符串补充

<?php
//对于字符串中的指定字符做增删改查操作
$string='abcdef';

//查找
echo $string{0};

echo '<br/>';

echo $string{2};

echo '<br/>';

echo $string{5};

echo '<br/>';

//修改
//注意,修改的时候只能一个字符替换一个字符
$string{1}='z';

echo $string;//azcdef

echo '<br/>';

$string{4}='!';

echo $string;//azcd!f


echo '<hr/>';

$string='abc';

$string{0}='hello';

echo $string;//hbc

echo '<hr/>';
//不要对于中文字符做操作
$string='你好';
var_dump($string);//'你好' (length=6)

echo '<hr/>';

//删除
$string='abcdef';

$string{2}='';

echo $string;

echo '<br/>';

$string{0}='';

echo $string;

//添加字符

echo '<br/>';

$string='abc';
$string{3}='d';

echo $string;
echo '<br/>';

$string='abc';//abc00e

$string{5}='e';//abc e

echo $string;
echo '<br/>';
var_dump($string);

/*
$string='king';

1.输出首字母
2.将字符串中n编程o
3.将字符串中i删除掉
4.在字符串末尾添加一个!

 */
demo1

 

6.类型转换

类型转换是指将变量或值从一种数据类型转换成其他数据类型。转换的方法有两种

自动转换
强制转换

 

自动转换

布尔值/null:
		true在算术计算中可以自动转成数值1;
		false在算术计算中可以自动转成数值0;
		null在算术计算中可以自动转成数值0;
		直接输出true的值:1   false和null是没有输出结果
字串类型的转换
		字串在算术计算中可以自动转成数值:
		规则:从字串前面开始找最大的数字即为数值
		"123abc" => 123
		"abc123" => 0
		"12a8c3" => 12
		"abcd"	 => 0
		"12.4bd" => 12.4
		"12e4abc"=> 12e4

强制转换

(int),(integer) - 转换成整型
(bool),(boolean) - 转换成布尔型
(float),(double),(real) - 转换成浮点型
(string) - 转换成字符串
(array) - 转换成数组
(object) - 转换成对象

临时转换与永久转换

<?php
//临时转换的例子
$var=true;
var_dump($var);
$res=(int)$var;
var_dump($res);
var_dump($var);
echo '<hr/>';

var_dump((int)$var,(integer)$var);
//临时转换成浮点类型
var_dump((float)$var,(double)$var,(real)$var);

echo '<br/>';

$var=3.6;
//舍掉小数部分
var_dump((int)$var,(integer)$var);

//临时转换成字符串型

$var=true;

var_dump((string)$var);

//临时转换成布尔类型
$var='3king';

var_dump((bool)$var,(boolean)$var);

//临时转换成空

$var='hello';

var_dump((unset)$var);

//临时转换成数组

$var=123;

var_dump((array)$var);

//临时转换成对象
$var=12.3;

var_dump((object)$var);
临时转换1
<?php

//通过系统函数完成临时转换

$var='3king';

$res=intval($var);

var_dump($res);

/*
Fatal(致命错误) error: Uncaught Error: Call to undefined function realval()
 in /home/vagrant/php-project/studyPHP/demo1/15-type.php on line 11
调用了未定义的函数realval()
 */
var_dump(floatval($var),doubleval($var));

var_dump(boolval($var));

$var=true;

var_dump(strval($var));
临时转换2
<?php
//永久转换的例子

//得到变量的类型

$var=123;

var_dump($var);//int 123

echo gettype($var);//integer

echo '<br/>';

$var=true;

echo gettype($var);//boolean

echo '<hr/>';

//永久转换settype($var,$type)

$var=123;

var_dump($var);

//对$var做了一个手术,变成布尔类型
settype($var,'bool');

var_dump($var);

/*
type可能的值为:
“boolean” (或为“bool”,从 PHP 4.2.0 起)
“integer” (或为“int”,从 PHP 4.2.0 起)
“float” (只在 PHP 4.2.0 之后可以使用,对于旧版本中使用的“double”现已停用)
"string"
"array"
"object"
“null”
 */
$var='3king';
settype($var,'int');
var_dump($var);

$var=12.3;

/*
Warning(警告): settype(): Invalid(非法) type
in /home/vagrant/php-project/studyPHP/demo1/16-type.php on line 48
 */
//手术失败
settype($var,'king');

var_dump($var);
永久转换

7.常量

 可以理解为值不能被修改的变量,使用时不需要加$符

<?php
//php中的常量:固定不变的值称常量,一旦定义是不可以被修改和销毁的。
//在php中常量的定义方式:2种:define()、 const

//第一种:使用define()函数
define("PI",3.1415926); //定义一个常量PI值为3.1415926
define("CEO","首先执行官");
define("CEO","首先执行官2"); //修改值无效

//第二种:使用const关键字
const SEO="搜索引擎优化";

//使用常量
echo CEO."<br/>";

echo "我的工作是".SEO."<br/>";

echo 10*PI; //使用常量进行计算

echo "<hr/>";

//输出系统中的魔术常量(预定义常量)
echo "当前系统:".PHP_OS."<br/>";
echo "PHP版本:".PHP_VERSION."<br/>";
echo "当前文件名:".__FILE__."<br/>";
echo "当前行号:".__LINE__."<br/>";

echo "<hr/>";

//输出系统中的所有的常量
$list = get_defined_constants();
echo "<pre>";
print_r($list); //格式化输出
demo

常用的魔术常量 

__LINE__:当前行号
__FILE__:当前文件
__DIR__:当前目录
__FUNCTION__:当前函数
__CLASS__:当前类
__METHOD__:当前方法
__NAMESPACE__:当前命名空间

8.PHP的运算符  

8.1 算术运算符:+ - * /  %(取模/求余) ++ --
8.2 字符串运算符 . .=
8.3 赋值运算符  = += -= *= /= %= .=
8.4 比较运算符 > < >= <= <> != == === !==
8.5 逻辑运算符:逻辑与:and &&   逻辑或 or || 逻辑非 not !  异或:xor 
		其中逻辑与和逻辑或都具有短路效果。(短路与和短路或)
8.6 位运算符:& | ^ ~  << >>
8.7 其他运算符:?:  ``  @  => -> instanceof
8.8 运算符的优先级

9.流程控制

if switch while do..while for foreach中,for 和 foreach复杂些

for循环

<?php
for($i=1;$i<=9;$i++){
  echo '<h1>this is a test</h1>';
}

echo '<hr/>';
for($i=1;$i<=9;$i++):
  echo '<h1>hello world</h1>';
endfor;

echo '<hr/>';
/*
for(exp1;exp2;exp3){
  代码段;
}

 */
$i=1;
for(;$i<=3;$i++){
  echo $i,'<br/>';
}
echo '<hr/>';
//当省略第二个表达式的时候,会认为条件永远为true
$i=1;
for(;;$i++){
  if($i>5){
    break;
  }
  echo $i,'<br/>';
}
echo '<hr/>';
$i=1;
for(;;){
  if($i>5){
    break;
  }
  echo $i,'<br/>';
  $i++;
}
echo '<hr/>';


for($i=1,$j=2,$k=3;$i<=5;$i++){
  echo '<h2>hello world</h2>';
}
var_dump($j,$k);
echo '<hr/>';
//最后一个条件决定是否可以执行循环体
for($i=1,$j=2,$k=3;$i<=5,$k<=1;$i++,$k++){
  echo '<h2>hello world</h2>';
}
var_dump($i,$j,$k);
demo01
<?php
header('content-type:text/html;charset=utf-8');
//死循环
// for($i=1;$i>=0;$i++){
//   echo $i,'<br/>';
// }

//可以通过break结束for语句

for($i=1;$i>=0;$i++){
  if($i>10){
    break;
  }
  echo $i,'<br/>';
}
echo '<hr/>';
//continue 代表跳过当次循环执行下次循环

for($i=1;$i<=10;$i++){
  if($i==3){
    continue;
    echo 'this is a test<br/>';
  }
  echo $i,'<br/>';
}
echo '<hr/>';
//for循环的嵌套结构
for($i=1;$i<=3;++$i){
  echo '外层循环执行第'.$i.'次<br/>';
  for($j=1;$j<=2;++$j){
    echo '内层循环执行第'.$j.'次<br/>';
  }
  echo '<hr/>';
}
echo '<hr/>';

echo '<table border="1" cellpadding="0" cellspacing="0" width="80%" >';
  for($i=1;$i<=5;$i++){
    echo '<tr>';
        for($j=1;$j<=30;$j++){
          echo '<td>x</td>';
        }
    echo '</tr>';
  }

echo '</table>';
echo '<hr/>';
echo '<table border="1" cellpadding="0" cellspacing="0" width="80%" >';
  for($i=1;$i<=9;$i++){
    echo '<tr>';
      for($j=1;$j<=$i;$j++){
        echo "<td>{$j}&times;{$i}=".($i*$j)."</td>";
      }
    echo '</tr>';
  }
echo '</table>';
/**

百钱买百鸡的问题算是一套非常经典的不定方程的问题,题目很简单:公鸡5文钱一只,母鸡3文钱一只,小鸡3只一文钱,
用100文钱买一百只鸡,其中公鸡,母鸡,小鸡都必须要有,问公鸡,母鸡,小鸡要买多少只刚好凑足100文钱。
 */
demo02
<?php
for($i=1;$i<=9;$i++){
  echo '<h1>this is a test</h1>';
}

echo '<hr/>';
for($i=1;$i<=9;$i++):
  echo '<h1>hello world</h1>';
endfor;

echo '<hr/>';
/*
for(exp1;exp2;exp3){
  代码段;
}

 */
$i=1;
for(;$i<=3;$i++){
  echo $i,'<br/>';
}
echo '<hr/>';
//当省略第二个表达式的时候,会认为条件永远为true
$i=1;
for(;;$i++){
  if($i>5){
    break;
  }
  echo $i,'<br/>';
}
echo '<hr/>';
$i=1;
for(;;){
  if($i>5){
    break;
  }
  echo $i,'<br/>';
  $i++;
}
echo '<hr/>';


for($i=1,$j=2,$k=3;$i<=5;$i++){
  echo '<h2>hello world</h2>';
}
var_dump($j,$k);
echo '<hr/>';
//最后一个条件决定是否可以执行循环体
for($i=1,$j=2,$k=3;$i<=5,$k<=1;$i++,$k++){
  echo '<h2>hello world</h2>';
}
var_dump($i,$j,$k);
demo03

10.表单提交

GET方式

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8"/>
        <title>我的HTML文档</title>
    </head>
    <body>
        <h3>form表单提交</h3>
        <form action="form.php" method="get">
           数值1:<input type="text" name="num1"/><br/><br/>
           数值2:<input type="text" name="num2"/><br/><br/>
           <input type="submit" value="求和"/>
        </form>
    </body>
</html>
form.html
<?php
//接收并输出表单提交的信息

$m1 = $_GET['num1']; //从get请求中获取参数num1的值,并赋给变量m1

$m2 = $_GET['num2']; //从get请求中获取参数num2的值,并赋给变量m2

//进行求和
$res = $m1+$m2;

//输出
echo $m1."+".$m2."=".$res;

form.php
form.php

POST方式

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8"/>
        <title>我的HTML文档</title>
    </head>
    <body>
        <h3>form表单提交</h3>
            <form action="form.php" method="post">
             <p>姓名: <input type="text" name="name" /></p>
             <p>年龄: <input type="text" name="age" /></p>
             <p><input type="submit" /></p>
            </form>
        </form>
    </body>
</html>
form.html
<?php 
header("Content-Type: text/html;charset=utf-8");

echo  htmlspecialchars ( $_POST [ 'name' ]); 
echo (int) $_POST [ 'age' ];  

?>
form.php

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

posted @ 2019-10-04 12:08  沐风先生  阅读(213)  评论(0编辑  收藏  举报