• PHP开发工具

    • PHP服务器组件
    • PHP IDEIntegrated Development Environment集成开发环境
    • MySql管理工具
    • 文本编辑器
  • PHP语法
    • PHP echo 和 print 语句

      • echo出字符串的正确打开方式
  • 变量
    • 什么是变量
    • 变量名的命名规则
    • PHP 是一门弱类型语言
    • 变量作用域
      • 局部和全局作用域
      • global 关键字
      • Static 作用域
      • 参数作用域
  • 数据类型
    • 字符串

      • 字符串情况一
      • 字符串情况二
      • 字符串情况三
      • 并置运算符
      • strlen 函数
      • strpos 函数
    • 整型
    • 浮点型
    • 布尔型
    • 数组
    • 对象
    • NULL 值
    • 特殊类型资源
  • 常量
    • PHP 常量
    • 设置常量
    • 认识一下系统常量
  • 运算符
    • PHP 算术运算符
    • PHP 赋值运算符
    • PHP 递增递减运算符
    • PHP 比较运算符
    • PHP 逻辑运算符
    • PHP 数组运算符
    • 三元运算符
    • 组合比较符PHP7
    • PHP 错误控制运算符
  • 语言结构语句
    • PHP 条件结构之IfElse
    • PHP 条件结构之switchcase
    • PHP 循环结构之while
    • PHP 循环结构之dowhile
    • PHP 循环结构之dowhile的运用优势举例
    • PHP 循环结构之for
    • PHP 循环结构之foreach
      • 1只取值不取下标
      • 2同时取下标和值
    • PHP 结构嵌套之条件嵌套
    • PHP 结构嵌套之循环嵌套
    • PHP 结构嵌套之循环结构与条件结构嵌套

PHP开发工具

关于PHP的开发工具其实网站上可以搜索到非常多,对于初学者来说,太多的选择反而不知道怎么去选。

本文是基于window平台上,针对PHP初学者定制了一套非常好用的开发工具。

PHP开发工具包括:

PHP服务器组件。
PHP IDE(Integrated Development Environment,集成开发环境)。
MySql管理工具
文本编辑器

PHP服务器组件

PHP服务器组件非常多有WampServer、XAMPP、AppServ、phpStudy、phpnow等。
笔者推荐: WampServer,这也是目前window平台上使用最广泛的,操作也非常简单。WampServer内部还集成了PhpMyAdmin 数据库管理工具。还有phpStudy
WampServer 下载地址:http://www.wampserver.com/en/#download-wrapper
phpStudy 下载地址:http://www.phpstudy.net/a.php/208.html

PHP IDE(Integrated Development Environment,集成开发环境)

PHP IDE 也是非常多有Zend Studio、Eclipse for PHP、EasyEclipse等。
笔者推荐:Zend Studio

MySql管理工具

MySql管理工具常用的有:Navicat for Mysql、PhpMyAdmin。

文本编辑器

如果你已经能够熟练掌握PHP的语法,那你可以逐渐抛弃那些笨重的IDE,使用文本编辑器来编写PHP代码。
常用的编辑器有:Sublime、PHPstorm、Notepad++、editplus等。
笔者推荐:Sublime、PHPstorm


PHP语法

PHP echo 和 print 语句

echo 和 print 区别:
• echo - 可以输出一个或多个字符串
• print - 只允许输出一个字符串,返回值总为 1
提示:echo 输出的速度比 print 快, echo 没有返回值,print有返回值1。

echo 是一个语言结构,使用的时候可以不用加括号,也可以加上括号: echo 或 echo()。
使用 echo 命令输出字符串(字符串可以包含 HTML 标签):

<?phpecho "<h2>PHP is fun!</h2>";echo "This", " string", " was", " made", " with multiple parameters.";
?>

使用 echo 命令输出变量和字符串:

<?php$txt1="Learn PHP";$txt2="w3cschool.cc";$cars=array("Volvo","BMW","Toyota");echo $txt1;echo "<br>";echo "Study PHP at $txt2";echo "My car is a {$cars[0]}";
?>

print 同样是一个语言结构,可以使用括号,也可以不使用括号: print 或 print()。
使用 print 命令输出字符串(字符串可以包含 HTML 标签):

<?phpprint "<h2>PHP is fun!</h2>";print "I'm about to learn PHP!";
?>

使用 print 命令输出变量和字符串:

<?php$txt1="Learn PHP";$txt2="w3cschool.cc";$cars=array("Volvo","BMW","Toyota");print $txt1;print "<br>";print "Study PHP at $txt2";print "My car is a {$cars[0]}";
?>

echo出字符串的正确打开方式

一个字符串是用双引号括起来的一个词或一个句字,比如:“Hi,CSDN!”。你可以用PHP语言输出把这个字符串输出,像这样:

<?php echo "Hi,CSDN!";?>

也可以用单引号括起来,就像下面代码:

<?php echo 'Hi,CSDN!';?>

可以把两个字符用连接符连接起来,像这样:

<?php echo 'Hi,'.'CSDN!';?>

注意:连接符可以连接多个字符串,上例就是把一个字符串拆分为二个小字符串,然后用一个连接符连起来。
在php中字符串连接符是用点(.)来表示的,这一点比较特殊。


变量

什么是变量

变量是用于存储值的,我们命令服务器去干活的时候,往往需要产生一些数据,需要临时性存放起来,方便取用。我们也可以理解为,变量就像一个购物袋,我们可以用来装苹果、榴莲(当然也可以用来装玫瑰),需要注意的是,一般情况下一个变量只能装一个(不要太贪心)值,除非是复合变量(后面变量类型时会介绍),当我们放进去一个苹果后,再放进榴莲的时候,苹果就被替换掉,再放入香蕉,那么榴莲就被替换了。

        $var = "ABCD";echo $var;echo "<br />";$var = "1234";echo $var;

变量名的命名规则

变量名除了需要“$”进行标识外,还有一些规则需要遵守。就像拿到驾驶证以后,还得遵守交通规则。变量名的命名规则主要有三条:
1、变量名必须以字母或下划线 “_”开头,如”$_name”,”$name” ,”$name2”等,但是”$9name”是不对的。
2、变量名只能由字母、数字、以及“_”组成,还能包含汉字。如”$_qq”,”$qq308” ,”$my_apple”,“比如”$name我等”,但是”$name*”是不对的。
3、变量名不允许包含空格。当变量名由多个单词组成,建议使用“_”进行分隔(比如 $my_apple),俗称下划线法,或者以大写字母开头比如 $myApple,俗称骆驼式命名法(也称驼峰命名法)。
特别需要注意的是,在PHP中变量名是区分大小写的,如“$my_book”与“$my_Book”代表两个不同的变量。

PHP 变量命名规则:
• 变量以 $ 符号开始,后面跟着变量的名称
• 变量名必须以字母或者下划线字符开始
• 变量名只能包含字母数字字符以及下划线(A-z、0-9 和 _ )
• 变量名不能包含空格
• 变量名是区分大小写的($y$Y 是两个不同的变量)
PHP 语句和 PHP 变量都是区分大小写的。

<?php$my_book = "我的小写的book";$my_BOOK = "我的大写的BOOK";echo $my_book;echo "<br />";echo $my_BOOK;echo "<br />";$my_book = "这次奇迹要发生啦";echo $my_book;echo "<br />";
?>

变量是用于存储信息的”容器”:

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

与代数类似
x=5
y=6
z=x+y
在代数中,我们使用字母(如 x),并给它赋值(如 5)。
从上面的表达式 z=x+y ,我们可以计算出 z 的值为 11。
变量是用于存储数据的容器。


PHP 是一门弱类型语言

在上面的实例中,我们注意到,不必向 PHP 声明该变量的数据类型。
PHP 会根据变量的值,自动把变量转换为正确的数据类型。
在强类型的编程语言中,我们必须在使用变量前先声明(定义)变量的类型和名称。


变量作用域

变量的作用域是脚本中变量可被引用/使用的部分。
PHP 有四种不同的变量作用域:
• local
• global
• static
• parameter


局部和全局作用域

在所有函数外部定义的变量,拥有全局作用域。除了函数外,全局变量可以被脚本中的任何部分访问,要在一个函数中访问一个全局变量,需要使用 global 关键字。
在 PHP 函数内部声明的变量是局部变量,仅能在函数内部访问:

<?php $x=5; // 全局变量 function myTest() { $y=10; // 局部变量 echo "<p>测试函数内变量:<p>"; echo "变量 x 为: $x"; echo "<br>"; echo "变量 y 为: $y"; }myTest(); echo "<p>测试函数外变量:<p>"; echo "变量 x 为: $x"; echo "<br>"; echo "变量 y 为: $y";
?>

在以上实例中 myTest() 函数定义了 $x$y 变量。 $x 变量在函数外声明,所以它是全局变量 , $y 变量在函数内声明所以它是局部变量。
当我们调用myTest()函数并输出两个变量的值, 函数将会输出局部变量 $y 的值,但是不能输出 $x 的值,因为 $x 变量在函数外定义,无法在函数内使用,如果要在一个函数中访问一个全局变量,需要使用 global 关键字。
然后我们在myTest()函数外输出两个变量的值,函数将会输出全局部变量 $x 的值,但是不能输出 $y 的值,因为 $y 变量在函数中定义,属于局部变量。
你可以在不同函数中使用相同的变量名称,因为这些函数内定义的变量名是局部变量,只作用于该函数内。


global 关键字

global 关键字用于函数内访问全局变量。
在函数内调用函数外定义的全局变量,我们需要在函数中的变量前加上 global 关键字:

<?php$x=5;$y=10;function myTest(){global $x,$y;$y=$x+$y;}myTest();echo $y; // 输出 15
?>

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

<?php$x=5;$y=10;function myTest(){$GLOBALS['y']=$GLOBALS['x']+$GLOBALS['y'];} myTest();echo $y;
?>

Static 作用域

当一个函数完成时,它的所有变量通常都会被删除。然而,有时候您希望某个局部变量不要被删除。
要做到这一点,请在您第一次声明变量时使用 static 关键字:

<?phpfunction myTest(){static $x=0;echo $x;$x++;}myTest();myTest();myTest();
?>

然后,每次调用该函数时,该变量将会保留着函数前一次被调用时的值。
注释:该变量仍然是函数的局部变量。


参数作用域

参数是通过调用代码将值传递给函数的局部变量。
参数是在参数列表中声明的,作为函数声明的一部分:

<?phpfunction myTest($x){echo $x;}myTest(5);
?>

数据类型

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


字符串

字符串型可以用三种方法定义:单引号形式、双引号形式和Heredoc结构形式。
可以将任何文本放在单引号和双引号中:

<?php $x = "Hello world!";echo $x;echo "<br>"; $x = 'Hello world!';echo $x;
?>

字符串情况一

字符串中包含单(双)引号的时候,怎么办?
第一种方案:在单引号中嵌入双引号;
第二种方案:在双引号中嵌入单引号;
第三种方案:使用转义符“\”(后面部分还有介绍);

<?php $str_string1 = '甲问:"你去看运动会了吗?"';$str_string2 = "乙毫不犹豫地回答:'当然没去!'";$str_string3 = '甲问:\'为什么?\'';$str_string4 = "乙答道:\"太冷了不想出门\"";echo $str_string1;echo "<br />";echo $str_string2;echo "<br />";echo $str_string3;echo "<br />";echo $str_string4;echo "<br />";
?>

字符串情况二

引号遇到了美元怎么办?此处指用美元符号标识的变量
当双引号中包含变量时,变量会与双引号中的内容连接在一起;
当单引号中包含变量时,变量会被当做字符串输出。

<?php $love = "I love you!"; $string1 = "love,$story"; //双引号echo可以解析出变量$string2 = 'love,$story'; //单引号echo不能解析出变量echo $string1;echo "<br />";echo $string2;
?>

字符串情况三

字符串很长很长怎么办?
我们可以使用Heredoc结构形式的方法来解决该问题,首先使用定界符表示字符串(<<<),接着在“<<<“之后提供一个标识符GOD,然后是字符串,最后以提供的这个标识符结束字符串。

<?php $string1 = <<<GOD同学你好,我是你专业的辅导员,因为我没有你的QQ号,特地借了这位同学的QQ来发消息给你,希望引起你的重视!经本专业多名同学举报,在上课时间,你不好好学习、认真听讲,总是玩手机发说说,给其他同学的日常学习生活造成了极大的恶劣影响。经校长室与教务处研究决定,决定给你期末考试挂科和留校观察的处分,具体补考时间和地点,详细请登陆学校教务系统查询,希望你在下学期改过自新,端正态度。(因为怕你看不懂再来一个英文版本)This classmate hello, I'm your professional counselors, because I don't have your QQ number, specially borrowed this classmate QQ to send message to you, hope to make you value! By the professional students to report, in the class time, you don't study well, listening, always play the phone, to other students daily study life caused great bad influence. Decided upon by the principal's office and the office of research and decided to give you failed the final exam and dispose of stay observation, make-up examination of the specific time and place, details please visit the school educational administration system query, I hope you in the next semester to turn over a new leaf and attitude. (怕你不懂,还有韩文的) 이 친구, 안녕하세요. 내가 니 전문 지도원. 왜냐하면 나는 너의 큐큐 친구 없어서 특별히 빌려 이 학생 큐큐 보낼게 소식을 너에게 끌려고 너의 중시!학과 동창 명의 경 고발, 수업 시간에 너 공부 열심히, 열심히 하지 않는 늘 놀러 휴대전화 문자 좀 다른 학생 에서 일상 생활 에 큰 나쁜 영향을 주었다.총장실 및 교무실 연구 거쳐 결정하다 결정 너에게 기말고사 挂科 및 학교에 남겨서 관찰 처분, 구체적인 재시험 시간과 장소, 자세히 좀 상륙 학교 교무실이 시스템 조회.너 안 보여.(怕你看不懂,还有日语的)こんにちは、私はあなたの専門の指導員で、私はあなたのQQ号がないため、わざわざこの学友のQQを借りることを借りて、あなたの重視を引き起こすことを引き起こします!授業時間、あなたはよく勉強し、まじめに講義、いつも携帯電話を遊んで、ほかのクラスメートの日常勉強生活に大きな悪影響をもたらしました。経校長室との教務を検討し、あなたに期末試験が切っ掛けと学校の処分を観察し、具体的に追試時間と場所、詳細は学校の教務係に上陸して検索して、あなたは来学期の改心、態度を正す。あなたはこのニュースを見ないで、私は学友のQQ号を換えてあなたに知らせます。(あなたを恐れて見て分からないでもう一つ英語版)This classmateハロー、I ' m yourプロフェッショナルcounselors(怕你看不懂,还有文言文的)人君好,吾为汝主名之辅导员,以我无君之QQ号,特借了此人之QQ来发消息与君,愿得君之重!经本业余同举,于上书时,君不学、谨听,辄弄机发言,与他同学之起学生为了莫大之恶风。经校长室与教务处定,定与汝期末试挂科与留校观察之罪,其补考时与地,详请陆学教务统问,愿在下学期新,正色。GOD;echo $string1;
?>

在赋值符号后,输入定界符“<<<”,接着是标识符,你可以用你的女神作为标识符“GOD”,如第2行,也可以使用你喜欢的狗狗,“DOG”作为标识符,但是,结尾处的标识符也必须是一样的。此外,在结尾的一行,一定要另起一行,并且此行除了“GOD”,并以“;”号结束之外,不能有任何其他字符,前后都不能有,包括空格,否则会出现错误。切记。

并置运算符

在 PHP 中,只有一个字符串运算符。
并置运算符 (.) 用于把两个字符串值连接起来。
将两个字符串变量连接在一起:

<?php $txt1="Hello world!"; $txt2="What a nice day!"; echo $txt1 . " " . $txt2;
?>

上面的代码将输出:Hello world! What a nice day!
提示:在上面的代码中,我们已经使用了两次并置运算符。这是由于我们需要在两个字符串之间插入一个空格。


strlen() 函数

有时知道字符串值的长度是很有用的。
strlen() 函数返回字符串的长度(字符数)。
下面的实例返回字符串 “Hello world!” 的长度:

<?php echo strlen("Hello world!");
?>

上面的代码将输出:12
提示:strlen() 常常用在循环和其他函数中,因为那时确定字符串何时结束是很重要的。(例如,在循环中,我们需要在字符串中的最后一个字符之后结束循环。)


strpos() 函数

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

<?php echo strpos("Hello world!","world");
?>

上面的代码将输出:6
提示:在上面的实例中,字符串 “world” 的位置是 6。之所以是 6 而不是 7 的原因是,字符串中第一个字符的位置是 0,而不是 1。


整型

整数是一个没有小数的数字。
整数规则:
• 整数必须至少有一个数字 (0-9)
• 整数不能包含逗号或空格
• 整数是没有小数点的
• 整数可以是正数或负数
• 整型可以用三种格式来指定:十进制, 十六进制( 以 0x 为前缀)或八进制(前缀为 0)。
在以下实例中我们将测试不同的数字。 PHP var_dump() 函数返回变量的数据类型和值:

<?php $x = 5985;var_dump($x);echo "<br>"; $x = -345; // 负数 var_dump($x);echo "<br>"; $x = 0x8C; // 十六进制数var_dump($x);echo "<br>";$x = 047; // 八进制数var_dump($x);
?>

浮点型

浮点数是带小数部分的数字,或是指数形式。
在以下实例中我们将测试不同的数字。 PHP var_dump() 函数返回变量的数据类型和值:

<?php $x = 10.365;var_dump($x);echo "<br>"; $x = 2.4e3;var_dump($x);echo "<br>"; $x = 8E-5;var_dump($x);
?>

布尔型

  布尔型只有两个值,一个是TRUE,另一个FALSE。它不区分大小写,”TRUE”和“true”效果是一样的。主要用在条件结构(条件结构在后面部分会介绍)中,例如判断是否满足条件的时候,是用“true”表示满足,用“false”表示不满足。
  需要注意的是,当我们用”echo”指令输出布尔类型时,如果是“true”则输出的是“1”,“false”则什么也不输出。我们可以使用“var_dump”函数,获取它真正的数据类型。

    $x=true;$y=false;
<?php$sex = "男";$flag = $sex == "男"; //判断该变量是否等于“男”,并将比较的结果赋值给变量“$flag”echo $flag;echo "<br />";var_dump($flag);
?>

数组

数组可以在一个变量中存储多个值。
在以下实例中创建了一个数组, 然后使用 PHP var_dump() 函数返回数组的数据类型和值:

<?php $cars=array("Volvo","BMW","Toyota");var_dump($cars);
?>

在接下来的章节中你将学到更多关于数组的知识。


对象

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

<?phpclass Car{var $color;function Car($color="green"){$this->color = $color;}function what_color(){return $this->color;}}
?>

PHP关键字this就是指向当前对象实例的指针,不指向任何其他对象或类。


NULL 值

NULL是空类型,对大小写不敏感,NULL类型只有一个取值,表示一个变量没有值,当被赋值为NULL,或者尚未被赋值,或者被unset(),这三种情况下变量被认为为NULL。

<?php$x="Hello world!";$x=null;var_dump($x);
?>
<?phperror_reporting(0); //禁止显示PHP警告提示$var;var_dump($var);$var1 = null;var_dump($var1);$var2 = NULL;var_dump( $var2);$var3 = "节日快乐!";unset ($var3) ; //释放$var3var_dump($var3);
?>

特殊类型—资源

资源(resource):资源是由专门的函数来建立和使用的,例如打开文件、数据连接、图形画布。我们可以对资源进行操作(创建、使用和释放)。任何资源,在不需要的时候应该被及时释放。如果我们忘记了释放资源,系统自动启用垃圾回收机制,在页面执行完毕后回收资源,以避免内存被消耗殆尽。

<?php$file=fopen("f.txt","r");   //打开文件$con=mysql_connect("localhost","root","root");  //连接数据库$img=imagecreate(100,100);//图形画布
?>
<?php//首先采用“fopen”函数打开文件,得到返回值的就是资源类型。$file_handle = fopen("good.txt","r");if ($file_handle){//接着采用while循环(后面语言结构语句中的循环结构会详细介绍)一行行地读取文件,然后输出每行的文字while (!feof($file_handle)){ //判断是否到最后一行$line = fgets($file_handle); //读取一行文本echo $line; //输出一行文本echo "<br />"; //换行}}fclose($file_handle);//关闭文件
?>

常量


PHP 常量

常量是一个简单值的标识符。该值在脚本中不能改变。
一个常量由英文字母、下划线、和数字组成,但数字不能作为首字母出现。 (常量名不需要加 $ 修饰符)。
注意: 常量在整个脚本中都可以使用。


设置常量

使用 define() 函数:
bool define ( string name,mixedname , mixed value [, bool $case_insensitive = false ] )
该函数有三个参数:
• name:必选参数,常量名称,即标志符。
• value:必选参数,常量的值。
• case_insensitive :可选参数,如果设置为 TRUE,该常量则大小写不敏感。默认大小写敏感。
(注: string表示参数类型为字符串类型,mixed表示参数类型可以接受为多种不同的类型,case_sensitive = true表示默认为布尔类型TRUE)

创建一个 区分大小写的常量, 常量值为 “欢迎访问 blog.csdn.net”:

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

创建一个 不区分大小写的常量, 常量值为 “欢迎访问 blog.csdn.net”:

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

常量是全局的
在函数内可以使用常量,即便常量定义在函数外也可以正常使用常量。

<?phpdefine("GREETING", "欢迎访问 blog.csdn.net");function myTest(){echo GREETING;}myTest();    // 输出 "欢迎访问 blog.csdn.net"
?>

认识一下系统常量

系统常量是PHP已经定义好的常量,可以直接拿来使用,常见的系统常量有:
(1)__FILE__ :php程序文件名。它可以帮助我们获取当前文件在服务器的物理位置。
(2)__LINE__ :PHP程序文件行数。它可以告诉我们,当前代码在第几行。
(3)PHP_VERSION:当前解析器的版本号。它可以告诉我们当前PHP解析器的版本号,我们可以提前知道我们的PHP代码是否可被该PHP解析器解析。
(4)PHP_OS:执行当前PHP版本的操作系统名称。它可以告诉我们服务器所用的操作系统名称,我们可以根据该操作系统优化我们的代码。


运算符

PHP 算术运算符

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

PHP7+ 版本新增整除运算符 intdiv(),使用:

<?phpvar_dump(intdiv(10, 3)); // 输出int(3)
?>

取模算术符有什么作用呢?

假设我们要在一个考场安排了一场考试,对考生从1开始,都进行了编号,那么怎么让服务器帮助我们计算考生在的位置呢,进而打印考场的考生对照表呢?

<?php $maxLine = 4; //每排人数$no = 17;//学生编号$line = ceil($no/$maxLine);$row = $no%$maxLine?$no%$maxLine:$maxLine;echo "编号<b>".$no."</b>的座位在第<b>".$line."</b>排第<b>".$row."</b>个位置";//输出:编号17的座位在第5排第1个位置
?>

PHP 赋值运算符


使用不同赋值运算符得到的不同结果:

<?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
?>

使用不同字符串运算符得到的不同结果:

<?php$a = "Hello";$b = $a . " world!";echo $b; // 输出Hello world! $x="Hello";$x .= " world!";echo $x; // 输出Hello world!
?>

PHP 递增/递减运算符


使用递增/递减运算符得到的结果:

<?php$x=10; echo ++$x; // 输出11$y=10; echo $y++; // 输出10$z=5;echo --$z; // 输出4$i=5;echo $i--; // 输出5
?>

PHP 比较运算符


使用一些比较运算符得到的不同结果:

<?php$x=100; $y="100";var_dump($x == $y);echo "<br>";var_dump($x === $y);echo "<br>";var_dump($x != $y);echo "<br>";var_dump($x !== $y);echo "<br>";$a=50;$b=90;var_dump($a > $b);echo "<br>";var_dump($a < $b);
?>

PHP 逻辑运算符


PHP 数组运算符


使用一些数组运算符得到的不同结果:

<?php$x = array("a" => "red", "b" => "green"); $y = array("c" => "blue", "d" => "yellow"); $z = $x + $y; // $x 和 $y 数组合并var_dump($z);var_dump($x == $y);var_dump($x === $y);var_dump($x != $y);var_dump($x <> $y);var_dump($x !== $y);
?>

三元运算符

另一个条件运算符是”?:”(或三元)运算符 。
语法格式
(expr1) ? (expr2) : (expr3)
对 expr1 求值为 TRUE 时的值为 expr2,在 expr1 求值为 FALSE 时的值为 expr3。
自 PHP 5.3 起,可以省略三元运算符中间那部分。表达式 expr1 ?: expr3 在 expr1 求值为 TRUE 时返回 expr1,否则返回 expr3。

<?php$test = 'CSDN'; // 通过判断 $_GET 请求中含有 user 值,如果有返回 $_GET['user'],否则返回 nobody// 普通写法$username = isset($test) ? $test : 'nobody';echo $username, PHP_EOL;// PHP 5.3+ 版本写法$username = $test ?: 'nobody';echo $username, PHP_EOL;
?>

注意:PHP_EOL 是一个换行符,兼容更大平台。
在 PHP7+ 版本多了一个 NULL 合并运算符,实例如下:

<?php// 如果 $_GET['user'] 不存在返回 'nobody',否则返回 $_GET['user'] 的值$username = $_GET['user'] ?? 'nobody';// 类似的三元运算符$username = isset($_GET['user']) ? $_GET['user'] : 'nobody';
?>

组合比较符(PHP7+)

PHP7+ 支持组合比较符:

<?php// 整型echo 1 <=> 1; // 0echo 1 <=> 2; // -1echo 2 <=> 1; // 1// 浮点型echo 1.5 <=> 1.5; // 0echo 1.5 <=> 2.5; // -1echo 2.5 <=> 1.5; // 1// 字符串echo "a" <=> "a"; // 0echo "a" <=> "b"; // -1echo "b" <=> "a"; // 1
?>

PHP 错误控制运算符

PHP中提供了一个错误控制运算符“@”,对于一些可能会在运行过程中出错的表达式时,我们不希望出错的时候给客户显示错误信息,这样对用户不友好。于是,可以将@放置在一个PHP表达式之前,该表达式可能产生的任何错误信息都被忽略掉;

如果激活了track_error(这个玩意在php.ini中设置)特性,表达式所产生的任何错误信息都被存放在变量$php_errormsg中,此变量在每次出错时都会被覆盖,所以如果想用它的话必须尽早检查。

需要注意的是:错误控制前缀“@”不会屏蔽解析错误的信息,不能把它放在函数或类的定义之前,也不能用于条件结构例如if和foreach等。

<?php  $conn = @mysql_connect("localhost","username","password");echo "出错了,错误原因是:".$php_errormsg;/*输出:出错了,错误原因是:mysql_connect() [function.mysql-connect]: Access denied for user 'username'@'localhost' (using password: YES)*/
?>

语言结构语句


PHP 条件结构之If…Else

PHP 条件语句
编写代码时,常常需要为不同的判断执行不同的动作。
在 PHP 中,提供了下列条件语句:
• if 语句 - 在条件成立时执行代码
• if…else 语句 - 在条件成立时执行一块代码,条件不成立时执行另一块代码
• if…else if….else 语句 - 在若干条件之一成立时执行一个代码块
• switch 语句 - 在若干条件之一成立时执行一个代码块


PHP 条件结构之switch…case…

工作原理:首先对一个简单的表达式 n(通常是变量)进行一次计算。将表达式的值与结构中每个 case 的值进行比较。如果存在匹配,则执行与 case 关联的代码。代码执行后,使用 break 来阻止代码跳入下一个 case 中继续执行。default 语句用于不存在匹配(即没有 case 为真)时执行。

<?php$favcolor="red";switch ($favcolor){case "red":echo "你喜欢的颜色是红色!";break;case "blue":echo "你喜欢的颜色是蓝色!";break;case "green":echo "你喜欢的颜色是绿色!";break;default:echo "你喜欢的颜色不是 红, 蓝, 或绿色!";}
?> 

在 PHP 中,提供了下列循环语句:
• while - 只要指定的条件成立,则循环执行代码块
• do…while - 首先执行一次代码块,然后在指定的条件成立时重复这个循环
• for - 循环执行代码块指定的次数
• foreach - 根据数组中每个元素来循环代码块


PHP 循环结构之while

while 循环将重复执行代码块,直到指定的条件不成立。

<?php$i=1; //首先设置变量 i 的值为 1while($i<=5) //只要 i 小于或者等于 5,while 循环将继续运行。循环每运行一次,i 就会递增 1{echo "The number is " . $i . "<br>";$i++;}//输出://The number is 1//The number is 2//The number is 3//The number is 4//The number is 5
?>

PHP 循环结构之do…while

do…while 语句会至少执行一次代码,然后检查条件,只要条件成立,就会重复进行循环。

<?php$i=1; //首先设置变量 i 的值为 1do //将变量 i 的值递增 1,然后输出。先检查条件(i 小于或者等于 5),只要 i 小于或者等于 5,循环将继续{$i++;echo "The number is " . $i . "<br>";}while ($i<=5);//输出://The number is 2//The number is 3//The number is 4//The number is 5//The number is 6
?>

PHP 循环结构之do…while的运用优势举例

while和do…while可以根据具体情况选用。
  假设有一种棋类游戏,首先掷骰子,若不为6,前进骰子的点数的步长;若为6,前进骰子的点数的步长,并可以再掷一次。

<?php//while例子$sum  = 0; $num = rand(1,6); //获取1至6的随机数,模拟掷骰子$sum = $sum  + $num;//前进步长while($num==6){$num = rand(1,6);//获取1至6的随机数,模拟掷骰子$sum = $sum  + $num;//前进步长};echo "while例子执行完毕,前进:".$sum ."<br />";//do...while例子$sum  = 0; do{$num = rand(1,6);//获取1至6的随机数,模拟掷骰子$sum = $sum  + $num;//前进步长}while($num==6);echo "do...while例子执行完毕,前进:".$sum ."<br />";//输出://while例子执行完毕,前进:16//do...while例子执行完毕,前进:15
?>

PHP 循环结构之for

for 循环用于您预先知道脚本需要运行的次数的情况。

初始值和增量参数可为空,或者有多个表达式(用逗号分隔)。

<?phpfor ($i=1; $i<=5; $i++) //只要变量 i 小于或者等于 5,循环将继续运行。循环每运行一次,变量 i 就会递增 1{echo "The number is " . $i . "<br>";}
?>

输出:
The number is 1
The number is 2
The number is 3
The number is 4
The number is 5


PHP 循环结构之foreach

foreach 循环用于遍历数组。

foreach ($array as $value)
{
要执行代码;
}

每进行一次循环,当前数组元素的值就会被赋值给 $value 变量(数组指针会逐一地移动),在进行下一次循环时,您将看到数组中的下一个值。

<?php$x=array("one","two","three");foreach ($x as $value) //输出给定数组的值的循环{echo $value . "<br>";}
?>

输出:
one
two
three


PHP中foreach循环语句一般有两种使用方式:不取下标、取下标

(1)只取值,不取下标

<?php
foreach (数组 as 值){
//执行的任务
}
?>

(2)同时取下标和值

<?php
foreach (数组 as 下标 => 值){
//执行的任务
}
?>

列出所有学生姓名!有一组以学号为下标,姓名为值的数组,这时候需要遍历数组的姓名。

<?php$students = array('2010'=>'令狐冲','2011'=>'林平之','2012'=>'曲洋','2013'=>'任盈盈','2014'=>'向问天','2015'=>'任我行','2016'=>'冲虚','2017'=>'方正','2018'=>'岳不群','2019'=>'宁中则',);//10个学生的学号和姓名,用数组存储//使用循环结构遍历数组,获取学号和姓名  foreach($students as  $v){ echo $v;//输出(打印)姓名echo "<br />";}
?>

输出:
令狐冲
林平之
曲洋
任盈盈
向问天
任我行
冲虚
方正
岳不群
宁中则


列出所有学生学号和姓名!有时候需要同时列出学号和姓名。

<?php$students = array('2010'=>'令狐冲','2011'=>'林平之','2012'=>'曲洋','2013'=>'任盈盈','2014'=>'向问天','2015'=>'任我行','2016'=>'冲虚','2017'=>'方正','2018'=>'岳不群','2019'=>'宁中则',);//10个学生的学号和姓名,用数组存储//使用循环结构遍历数组,获取学号和姓名  foreach($students as $key =>$v){ echo $key.":".$v;//输出(打印)学号:姓名echo "<br />";}
?>

输出:
2010:令狐冲
2011:林平之
2012:曲洋
2013:任盈盈
2014:向问天
2015:任我行
2016:冲虚
2017:方正
2018:岳不群
2019:宁中则


PHP 结构嵌套之条件嵌套

条件结构嵌套就像回家的路上会遇到多个十字路口。

假设在发3月工资的时候,不仅判定性别,还要判定男性是否有房,没有房,可以发放住房补贴,对于女性,判定是否怀孕,怀孕还有怀孕补贴。

<?php$totalMoney = 0;//总工资$basicMoney =  300;//基本工资$sex = "男";$noHouse = TRUE; //是否有房$houseMoney =  150;//住房补贴$isPregnancy = TRUE; //是否怀孕$pregnancyMoney =  100;//怀孕补贴if($sex == "男"){$totalMoney = $basicMoney  + 0;// 男的没奖金if($noHouse){$totalMoney = $totalMoney  + $houseMoney;} }else if($sex == "女"){$totalMoney = $basicMoney  + 300;// 女的有奖金300元if($isPregnancy){$totalMoney = $totalMoney  + $pregnancyMoney;} }echo $totalMoney;
?>

输出:
450


PHP 结构嵌套之循环嵌套

循环结构嵌套,就是类似于跑多个足球场,例如假设有两个足球场,一个大足球场,一个小足球场,在大足球场跑一圈后,再到小足球场跑几圈,跑完几圈后,再到大足球场中继续跑。在遍历二维数组中很常用。

通过二维数组,保存了学号、姓名和成绩,可以通过两个循环嵌套,遍历出学号和姓名。

<?php$students = array('2010'=>array('令狐冲',"59"),'2011'=>array('林平之',"44"),'2012'=>array('曲洋',"89"),'2013'=>array('任盈盈',"92"),'2014'=>array('向问天',"93"),'2015'=>array('任我行',"87"),'2016'=>array('冲虚',"58"),'2017'=>array('方正',"74"),'2018'=>array('岳不群',"91"),'2019'=>array('宁中则',"90"),);//10个学生的学号、姓名、分数,用数组存储foreach($students as $key=>$val){ //使用循环结构遍历数组,获取学号 echo $key; //输出学号echo ":";//循环输出姓名和分数foreach($val as $v){echo $v; }echo "<br />";}
?>

输出:
2010:令狐冲59
2011:林平之44
2012:曲洋89
2013:任盈盈92
2014:向问天93
2015:任我行87
2016:冲虚58
2017:方正74
2018:岳不群91
2019:宁中则90


PHP 结构嵌套之循环结构与条件结构嵌套

有时候在执行任务时,对于一些特殊的任务还需要进行额外处理,这个时候就会将循环结构与条件结构嵌套使用。

有个学生数组存储了学号和姓名,我们需要查找学号为“2014”的学生姓名,这时候我们就需要遍历该数组,并判定学号是否为“2014”。

<?php$students = array('2010'=>'令狐冲','2011'=>'林平之','2012'=>'曲洋','2013'=>'任盈盈','2014'=>'向问天','2015'=>'任我行','2016'=>'冲虚','2017'=>'方正','2018'=>'岳不群','2019'=>'宁中则',);//10个学生的学号和姓名,用数组存储$query = '2014';//使用循环结构遍历数组,获取学号和姓名foreach($students as $key =>$v){ //使用条件结构,判断是否为该学号if($key == $query){ echo $v;//输出(打印)姓名break;//结束循环(跳出循环)}}
?>

输出:
向问天


附:

笔者录制的phpStudy多站点配置视频教程,WampServer同理
http://download.csdn.net/detail/fancie_wong/9670531


更多PHP相关学习:http://blog.csdn.net/Fancie_Wong/article/category/6498482

PHP 入门基础知识相关推荐

  1. Python培训入门基础知识学什么?

    Python培训基础知识主要是针对一些零基础的同学安排的,虽说Python是相对比较简单的一门编程语言,但是没有基础的同学还是要进行系统的学习,那么Python培训入门基础知识学什么呢?来看看下面小编 ...

  2. NLP汉语自然语言处理入门基础知识介绍

    NLP汉语自然语言处理入门基础知识介绍 自然语言处理定义: 自然语言处理是一门计算机科学.人工智能以及语言学的交叉学科.虽然语言只是人工智能的一部分(人工智能还包括计算机视觉等),但它是非常独特的一部 ...

  3. 负荷计算的时候assert失败_负荷计算的入门基础知识,小白入门必备!

    负荷计算是电气设计人员必须掌握的一必修课,选导体.设备还有保护开关的选择,电网系统分析,都离不开负荷计算的内容,为此小编特意总结9个负荷计算的入门基础知识,分享给大家,希望能在工作和学习中作为一份参考 ...

  4. python笔记基础-Python入门基础知识学习笔记之一

    为什么要写这篇文章? 本人做过Objective-C开发,现在在用C#做WinForm开发.近段时间在学习Python入门基础知识时,发现有很多知识点和Objective-C的不一样.故想通过本文记录 ...

  5. 电脑的基础知识_电脑入门基础知识

    电脑入门基础知识 学习电脑应该先了解电脑的基本的组件,然后学习操作,包括键盘.鼠标的使用,能基本使用操作系统,再学习打字. 作为一个电脑小白,想要学习电脑,首先要知道如何操作,学习打字,接着就是熟练使 ...

  6. ***入门基础知识(超全)

    ***入门基础知识(超全) [sell=2]  DOS 常用命令: dir 列文件名 deltree 删除目录树 cls 清屏 cd 改变当前目录 copy 拷贝文件 diskcopy 复制磁盘 de ...

  7. Python入门基础知识学什么?

    Python基础知识主要是针对一些零基础的同学安排的,虽说Python是相对比较简单的一门编程语言,但是没有基础的同学还是要进行系统的学习,那么Python入门基础知识学什么呢?来看看下面小编的详细介 ...

  8. 半小时入门MATLAB编程入门基础知识:

    https://learnxinyminutes.com/docs/zh-cn/matlab-cn/ 半小时入门MATLAB编程入门基础知识: % 以百分号作为注释符 %{ 多行注释 可以 这样 表示 ...

  9. C语言入门基础知识有哪些?

    众所周知C语言经久不衰,并且很多人都想要成为C语言工程师,为了能够做好C语言技术学习,需要知晓C语言入门基础知识有哪些. 用一个简单的C程序例子,介绍C语言的基本构成.格式.以及良好的书写风格,使小伙 ...

  10. 嵌入式入门基础知识有哪些?

    嵌入式系统是指在特定应用领域内为满足特定要求而设计的计算机系统,通常被嵌入到设备中,具有实时性.可靠性.低功耗等特点.嵌入式系统应用广泛,例如:智能家居.智能手表.汽车控制系统.医疗设备等. 在本篇博 ...

最新文章

  1. mpi并行 java_【并行计算】用MPI进行分布式内存编程(一)
  2. 分布式配置管理平台Disconf--转
  3. python3.7安装教程mac_mac中怎么安装python3
  4. VS2017 启动调试报错无法启动程序 当前状态中非法
  5. java 多线程的同步问题_java多线程解决同步问题的几种方式,原理和代码
  6. Frame帧动画帧布局Android
  7. 90+深度学习开源数据集整理|包括目标检测、工业缺陷、图像分割等多个方向...
  8. 一份针对于新手的多线程实践
  9. 四叉树——图片应用实例
  10. 国标:PAAS应用程序管理要求
  11. PHP使用MQ消息队列
  12. 高一计算机课期中考试总结反思,高一期中考试总结反思1300字
  13. 用continue计算100以内奇数和_100万以内A类三胞胎素数有1393对
  14. Spring Boot实训开发个人博客4
  15. ps教程300集,让你入门就精通(内附资源)
  16. 良基、归纳法、动态规划
  17. PHP 版 微信小程序商城 源码和搭建
  18. 什么lol云顶之奕小助手小蜜蜂肝不完了?让万能的python来帮你
  19. 如何成为一个高情商的员工(附全书思维导图)
  20. 快递扫地机器人被损坏_熬夜秒到的扫地机器人丢了 快递公司最多赔几十元

热门文章

  1. 互联网大厂的背景调查,你需要认真对待了!
  2. micropython使用教程_micropython入门教程
  3. Echarts中条形统计图设置两条数据展示效果-图例样式位置设置
  4. 2021年下半年软件设计师下午真题答案及解析(二)
  5. 在前端对Excel文件进行下载
  6. linux如何查看光驱刻录日志,linux 刻录光碟 命令 cdrecord
  7. git compare对比
  8. 同步类容器和并发类容器
  9. 种草Cypress和TestCafe,QA同学一定想了解的Web UI自动化测试工具
  10. 亚洲元数字艺术榜单来袭,CV打卡领取超拉风空投