前言
很多人反馈上完大学的C语言课程、java课程不会写任何东西。
如果你要创业,如果你要与互联网人沟通。未来互联网、移动互联网、信息化将会进一步围绕在你身边。你需要与人沟通,与人打交道。
还有机会进入BAT(百度、阿里、腾讯),BAT这些企业他们在用PHP。国内和国外超一线的互联网公司,在超过90%在使用PHP来做手机API或者是网站。连微信等开放平台中的公众号的服务端也可以使用到PHP。
大并发,还能免费。一天1个亿的访问量怎么办?PHP拥有大量优秀的开发者,在一定数据量的情况下完全能满足你的需求。国内外一线的互联网公司,很多将自己的大并发方案进行开源了。你可以免费获得很多成熟的、免费的、开源的大并发解决方案。
开源更加节约成本也更加安全。windows很多都要收取授权费用,而使用linux的LAMP架构或者LNMP架构会更加安全。全球的黑客在帮你找漏洞。全球的工程师在帮忙修复漏洞。你发现一个他人已经消灭10个。
PHP(外文名:PHP: Hypertext Preprocessor,中文名:“超文本预处理器”)是一种通用开源脚本语言。语法吸收了C语言、Java和Perl的特点,利于学习,使用广泛,主要适用于Web开发领域。
用PHP做出的动态页面与其他的编程语言相比,PHP是将程序嵌入到HTML(标准通用标记语言下的一个应用)文档中去执行,执行效率比完全生成HTML标记的CGI要高许多;PHP还可以执行编译后代码,编译可以达到加密和优化代码运行,使代码运行更快。
通过cURL来做小偷程序
微信微博公众号、QQ公众号、地图和很多的第三方功能提供都是采用http 的API(应用程序)形式向开发人员提供的功能。
如果你只希望能够做些简单的微信公众号、QQ公众号等小应用,不想再深入学习PHP。学习到本章,你就可以完全掌握微信公众号服务端的的所需知识了。
如何请求微信、地图等第三方API呢?
这个时候就需要使用到——cURL。cURL中文翻译过来叫做基于URL的函数库。它的主要功能是:使用相关的函数模拟协议请求。
例如:
模拟表单向某个地址发送数据
在无验证码的情况下模拟表单完成用户登陆
上传某个文件到远程服务器
请求远程服务器提供的某些功能
… …
curl支持dict, file, ftp, ftps, gopher, http, https, imap, imaps, ldap, ldaps, pop3, pop3s, rtmp, rtsp, smtp, smtps, telnet和tftp协议。
curl同时也支持HTTPS认证、HTTP的POST、HTT的PPUT、FTP上传(这个也能通过PHP的FTP扩展完成)、HTTP基于表单的上传、代理、cookies和用户名+密码的认证。
我们在使用过程当中,如果没有cURL基础根本不知道如何开发微信公众号。
实际工作中,在cURL使用最多的协议就就是http协议中的get和post请求。其他协议和请求方式用的相对较少。当然,在特定的应用中也有使用。
在开发前请保证你已开启cURL模块。开启办法与之前所讲的**《PHP图像处理》**这一章的开启办法一样,开启的模块名称叫:php_curl.dll。
第一个网站
这句代码非常神奇,一句话能变成一个网页。是我们PHP入门的第一段代码。
现在你可以在网页服务器的根目录(D:\phpStudy\www)当中新建一个文件。文件的名字为:abc.php。
在这个abc.php文件中写入如下代码。
<?php phpinfo(); ?>
<?php //这句话是说明从此处【尖括号、问号、PHP】这5个字符开始,往下的部份是PHP代码。 ?>
phpinfo是一个函数(功能),这个函数(功能)会显示一个当前电脑(服务器)的详细的PHP信息。在后面会专门为大家讲解phpinfo()这个函数。这个函数必须要大家记住!
注意事项:
PHP还可以有简洁声明模式,我们在这个阶段以代码练习为主。关于环境配置问题,暂时不建议学习。在后面的章节中,我们会专门进行讲解。
我们在写文件abc.php这个文件命名的时候,只用英文半脚(a-zA-Z0-9_-)这些字符来命名文件。文件命名不要用中文,不要用特殊附号,不要中间加空格,严格区分大小。
php中的变量
必须要以 $开始 。
2.变量的首字母不能以数字开始
3.变量的名字区分大小写
4.变量不要用特殊符号、中文,_不算特殊符号
5.变量命名要有意义(别写xxx,aaa,ccc这种 变量名)
echo 显示命令
<?php $iphone = 6088; echo $iphone; ?>
php注释
<?php /* 时间:20 功能:这是一个假的多行注释的例子 */ /* 声明一个爱情变量 $love 是指爱情 爱情是一个变量 所以,爱情变量的值为250 */ $love = 250; ?>
整型
整型分为:
1.10进制
2.8进制 (了解,基本不用)
3.16进制(了解,基本不用)
<?php //为了方便大家记忆和前期学习,英文不好的朋友也可用拼音来声明变量。以后再用英文来声明变量也无所谓 //声明变量 整数,英文 int //$int = 1000; $zhengshu = 1000; echo $zhengshu; ?>
8进制声明: 以0开始,后面跟0-7的整数(了解知识点)
<?php //8进制的取值范围最大为0-7,即0,1,2,3,4,5,6,7 $bajingzhi = 033145; echo $bajingzhi; ?>
16进制声明: 以0x开始,后面跟0-f的,0x的abcdef不区分大小写。(了解知识点)
布尔变量
没有变量成员的对象。
变量值为空NULL
例如:
$a= false; //$a设置为假 $b=NULL: //$b设置为null $c=NULL; //$c设置为null
除了上述情况以外,其余情况值将会被转换为true,一般来说,1为true,0为false。这些转换将在以后的判断语句中经常遇到。
字符串
在PHP语言中声明字符串有三种方式:
用单引号声明
用双引号声明
用字界符声明,需要输入非常大段的字符串时使用
1.单引号声明
<?php //声明字符串变量$zhifu $zhifu = '曾经有操蛋的爱情摆在我面前,我珍惜了。当我得到的时候才感到后悔莫及。如果非要在这段爱情前面加上一段三个字,我愿意说三个字:滚犊子'; //你可以放XAMPP指定的目录下,新建一个文件叫str.php。然后访问一下http://127.0.0.1/str.php试试。会不会显示这句话。 echo $zhifu; ?>
2.双引号声明字符串
<?php //声明字符串变量$str $str = "如果非要在滚犊子前面加上一个时间的话我愿意是马上。"; echo $str; ?>
3.字界符声明
1).在变量后面的等号写三个小于号(<<<)。
2).然后在<<<后面写上字符(建议英文大写字符)。如下例中的:ABC
3).然后换行写上任意想写的字符
4).写完后,顶行。在行最开始处,再写上<<<后面的字符和分号。如下例中的:ABC;
<?php $dingjie = <<<ABC 如果 非要在这个滚犊子 前 面<br /> 加上一段 <i>距离的话</i> 我想说:<h1>思想有多远,你就跟我滚多远</h1> ABC; ?>
那双引号和单引号有什么区别呢?
【重要知识点】PHP 面试题中,高概率面试题(建议背诵并实验三遍以上)
双引号解析变量 ,但是单引号不解析变量。
在双引号里面插入变量,变量后面如果有英文或中文字符,它会把这个字符和变量拼接起来,视为一整个变量。一定要在变 量后面接上特殊字符,例如空格等分开。
如果在双引号里面插变量的时候,后面不想有空格,可以拿大括号将变量包起来。
双引号解析转义字符,单引号不解析转义字符。但,*单引号能解析’ 和*
单引号效率高于双引号,尽可能使用单引号
**双号和单引号可以互插!!!**双引号当中插入单引号,单引号当中插入变量,这个变量会被解析。
神奇的字符串拼接胶水——(.)点,用来拼接字符串。
我们将定界符声明字符串视为双引号一样的功能来看待。
实验举例
双引号解析变量,但是单引号不解析变量
<?php //声明变量$shouji $shouji = '为了苹果手机去卖肾'; //在双引号中放$shouji 然后echo 一下是什么效果呢? $str = "$shouji 会不会显示呢?"; //输入$str试试 echo $str; ?>
双引号需要解析变量,因此双引号的效率没有单引号高。我们如果为了更高的效率,我们通常使用单引号。
2.在双引号里面插入变量,变量后面如果有英文或中文字符,它会把这个字符和变量拼接起来,视为一整个变量。可以在后面接上特殊字符,例如空格等分开。
<?php $php = 'php中文网'; $str = "$phpaaaa"; //你会发现输出$str,什么都没有在页面中显示 echo $str; ?>
但是,我们在s t r 声明的这个字符串中将 str 声明的这个字符串中将str声明的这个字符串中将huaqiangu 后面接个空格再接aaaa,代码如下:
<?php $php = 'php中文网'; //中间加了空格哟 $str = "$php aaaa"; echo $str; ?>
我们把代码再改改:
<?php $php = 'php中文网'; //中间加了空格哟 $str = "$php!aaaa"; echo $str; ?>
大家打开一次页面,执行了一次代码看看结果是不是变为了:
php中文网!aaaa
因此,证明了我们的第二项观点。
如果在双引号里面插变量的时候,后面不想有空格,可以拿大括号将变量包起来。
那,如果我不想在后面有空格有,有特殊符号,就想直接显示变量$huaqiangu呢?——我们的解决办法是用大括号把变量包起来。代码如下:
<?php $php = 'php中文网'; //中间加了空格哟 $str = "{$php}aaaa"; echo $str; ?>
于是,大家会发现花千骨后面没有了特殊符号,也没有空格了,达到了我们想要的显示结果
双引号解析转义字符,单引号不解析转义字符。但,单引号能解析’ 和\
第4个字符串的注意事项比较难以观察,转义字符有一些,但最常用的有:
\n 回车
\t 缩进
我们来通过实验先来理解\n和\t是什么。
<?php //声明一个字符串,记住是双引号 $string = "每天来PHP中文网\n给梦想\t一个机会"; echo $string; ?>
转义字符\(反斜线的使用)
如果我们声明一个变量$beizi,我们想要在$beizi声明的双引号中间加上一个双引号显示输出怎么办?
答:我们需要**将双引号原有的意义去掉。再双引号前面加上一个**(反斜线,计算机的专业名词叫转义字符),就可以了。
<?php //要在$beizi的字符串中显示一个双引号怎么办? $beizi = "多于绝大多数的人出生就是杯具,但是\"我们在不断的让人生变为喜剧"; echo $beizi; ?>
你可以再执行一下上面的代码,发现不再报错了。同理可推,单引号当中要插入一个单引号显示出来的时候,也可以在单引号声明的字符串中的单引号前面加上(反斜线,转义字符),将单引号的意义(限定字符区间)去掉。
<?php //要在$beizi的字符串中显示一个双引号怎么办? $shengyang = 'i\'m xiaoshengyang'; echo $shengyang; ?>
双号和单引号**可以互插!!!**双引号当中插入单引号,单引号当中插入变量,这个变量会被解析。
代码如下:
<?php $legend = '猛虎'; $NoAlike = "心有'$legend',细嗅蔷薇"; echo $NoAlike; ?>
神奇的字符串拼接胶水——(.)点,用来拼接字符串。
<?php $php = 'PHP中文网'; //中间加了空格哟 $str = "{$php}aaaa"; echo $str; ?>
上面这段代码是,我们曾经说过双引号能够解析变量,有一个问题:
效率没有纯单引号的高
那么问题1:我想改为效率最高的方式应该怎么办?
问题2:我有多个字符串,要拼接在一声怎么办?
那,我们需要使用到神奇的胶水:(.)点,用来拼接字符串。
<?php $shixi = '大学4年要好好学习<br />'; $buran = '不然连实习的机会都没有<br />'; $mimang = '把别人用来迷茫的时间拿到PHP中文网<br />'; $xuexi = '学习PHP<br />'; //我们可以把字符串全部拼接起来。 echo $shixi . $buran . $mimang . $xuexi; ?>
因此,刚刚的问题一的代码我们可以改为:
<?php $php = 'PHP中文网'; //中间加了空格哟 $str = $php . 'aaaa'; echo $str; ?>
我们将定界符声明字符串视为双引号一样的功能来看待。
<?php $weilai = '努力才有未来'; $mimang = '迷茫的原因是没有目标'; $dingjie = <<<ABC 如果 $weilai 非要\t在这"个滚"犊子 前 '$mimang' 面<br /> 加上\n一段 <i>距离的话</i> 我想说:<h1>思想有多远,你就跟我滚多远</h1> ABC; echo $dingjie; ?>
你可以执行发现$weilai,$mimang,\t\n都可以执行,双引号单引号都能显示。这就是定界符的特点。
再声明一次:字符串的声明每一项都必须记住,非常常用。并且面试题出现的概率非常高!
不可见字符:主要是计算机规定的一些特殊符号。例如:回车(\n)、缩进(\t)等。
浮点型
普通声明浮点数
<?php //声明变量fudian的值为12121.3132 $fudian = 12121.3132; echo $fudian; ?> <?php //声明变量$fl 的值为0.8873 $fl = 0.8873; var_dump($fl); ?>
echo 直接输出了12121.3132,而var_dump 输出了0.8873,还显示了变量$fl的类型为float。
var_dump() 是一个函数。向括号()中间插入变量。这个函数,会打印出来数据类型,还会对应显示变量的长度和值。
var 是指变量的英文 : variable float 读音:[floʊt] 中文解释:计算机中的浮点类型
variable 读音:[ˈveriəbl] 中文解释:变量
dump 读音:[dʌmp] 中文解释:倾倒; 倾销;
程序控制流
if else
<?php //我们定义一个泡到美女的变量($pao)为true,意思为泡到了 $pao = true; if($pao){ echo '我愿意去死'; echo '林志玲,我爱死你了。'; }else{ echo '我不愿意去死'; echo '凤姐,我肯定不会爱你的'; } //if...else执行结束,后续代码 ?>
NULL
【重点】知道null产生的三种情况,学习empty 和 isset两个函数的区别。
主要有以下三空情况会产生空(null)类型:
1.通过变量赋值明确指定为变量的值为NULL
2.一个变量没有给任何值
3.使用函数unset()将变量销毁掉
接下来我们来讲解两个跟null相关的函数,这两个函数非常常用,我们将级别定义为【默写级别】。
empty()可以向括号中间传入一个变量。这个变量的值如果为false或者为null的话,返回true。
<?php $apple = null; if(empty($apple)){ echo '执行了真区间,凤姐,我爱你'; }else{ echo '行了假区间,你想凤姐了'; } ?>
上述实验证明,$apple为null。将apple放至empty中间。结果执行了真区间。
isset()可以向括号中间传入一个或者多个变量,变量与变量间用逗号分开。只要有有一个变量为null,则返回false。否则,则返回true。
<?php //待会儿将变量$jia改为null再执行看看结果 $jia = false; $result = isset($jia); var_dump($result); ?> <?php $one = 10; $two = false; $three = 0; $four = null; $result = isset($one , $two , $three , $four); //执行看看结果,是不是 var_dump($result); ?>
unset()这个函数的功能是毁掉变量。unset(变量)括号中间插入想要毁掉的变量名,这个变量就会被毁掉。
数组
本章重点:
知道数组是一个复合类型
数组的英文叫array,var_dump一个变量的时候看到的类型为array的,这个变量就是数组类型
会一个最简单、最基本的数组声明【默写】
接下来我们声明一个数组,了解数组里面可以插入多个值就行。
<?php //定义$shu这个变量 //数组声明是向array里面插入一个或者多个值 //一个或者多个值用逗号分开 $shu = array(1,2,3); ?>