初识PHP(一)
做为一名合格的前端开发攻城狮,了解一门服务端语言是必须的,所以我选了php。都说学的第一门语言对第二门语言会产生较大的影响,确实,每当我看到一个php知识点时,就同时会想到这个知识点在Javascript中有没有,有什么不一样?还有一些知识是共通的,这加快了我的php入门速度。为了加深自己的印象,我准备记录一下学习php的过程,这个过程中将会穿插一些php与Javascript的异同点。我选的第一份教程是来自w3school,因为上面的教程比较基础适合入门(当然慕课网的也不错),我的html也是从那里起步的。
语法
跟js一样,php也是一门脚本语言,但它运行在服务端,php语句必须以分号结尾,js就不用。相比js,php多了一种注释方式#。php中只有变量对大小写敏感。
变量
- 变量以$开头,有人说程序员想钱想疯了,到处都是美元符,$后面是变量名
- 变量名必须以字母或下划线开头
- 变量名只能包含数字、字母、下划线
补充:php中没有变量声明提升的概念,所有在使用变量或函数前必须先声明。
跟js一样,php也不需要定义变量的类型,php会自动转成正确的数据类型。
常量
常量需要用define(a,b,c)来声明,a是常量名,b是常量的值,c用来指定该常量是否对大小写敏感。常量不可重复声明,也就是说声明后无法更改其值。常量不同于变量,常量是自动全局的,不管在函数内还是函数外定义,在函数内外都可以访问,类似于超全局变量。超全局变量:在全部作用域中始终可用的内置变量。注:常量前面没有钱($)。
作用域
- local 局部 :函数内部声明的变量,在函数外不可访问(js闭包可以访问函数内部变量),函数执行完后内存回收机制自动销毁局部变量(js不会)。
- global 全局 :函数外声明的变量,在函数内不可访问(在js中称为全局变量,当然可以在函数内访问),如果要在函数内访问,需要做处理:在函数内变量前加“global”,如global $name;
- static 静态 :用在函数内声明变量,跟local的区别是static声明的变量在函数执行完后不会自动销毁。
输出
echo:可输出多个字符串,无返回值,比print稍快
print:只能输出一个字符串,返回值总是1
数据类型
- 字符串 string
- 整数 int,就是非小数
- 浮点数 float,即小数或指数形式的数字
- 逻辑 boolean,即true和false
- 数组 array
- 对象 object
- NULL null,唯一值即null
- 资源 resource 通过mysql查询返回的值称为资源
检测数据类型的函数是var_dump(),数据类型与js有些许不一样,php中数字分为了两种,浮点数也单独做为一种数据类型了。
字符串函数
检测字符串长度的strlen(),长度以字符计,单个数字、英文、空格计一个字符,单个中文计3个字符。js里单个中文计长度1。
在字符串中检测指定的字符用strpos()函数,相当于js的.indexOf()方法,找到就返回对应的位置,没找到时strpos()返回false而indexOf返回-1。
运算符
比较多,就只说与js不同的吧。
.运算符在php中叫串接,相当于js中字符串+字符串中的+号的功能,.=也就相当于js字符串拼接时的+=;
比较运算符中有两个不等于:!=和<>,不知道它们的区别在哪里?度娘和google也未搜到相关答案,有知道的同学还望告知不胜感激!另外还有一个完全不等于!==,值不相等,类型也不同。
逻辑运算符中有一个异或xor,运算符两边的值有且只有一个为true结果才为true。
if else/switch/while/for循环大致和js相同。
函数
php中的函数设置默认值直接在函数名后面的括号内设置,如设置$num的默认值为2:
function getNum($num=2){
return $num;
}
echo getNum(); // 2
数组
php中的关联数组类似js中的json,如下面是一个关联数组:
$arr = array("name"=>"wangmeijian","age"=>1024,"sex"=>"boy");
不同与js的是,php中不能直接echo出数组内容,js中可以用alert或console.info打印出来。
数组排序,php就比js丰富了,有正序sort(),倒序rsort(),按键正序ksort(),按键倒序krsort(),按值正序asort(),按值倒序arsotr()。
最后介绍几个超全局变量:
$GLOBALS:可以通过$GLOBALS[变量名]读取php脚本中任意全局变量,其实就相当于js的window。
$_SERVER:保存关于报头、路径和脚本位置的信息。
$_REQUEST:用来收集表单提交的数据,根据表单name值来读取对应表单值,如$_REQUEST['age']读取年龄。
$_POST:用来收集通过post方式提交的数据,通过name读取对应值。
$_GET:用来收集通过get方式提交的数据,也可以收集url中发送的数据。
以上,都是入门级别的知识,加上了个人理解,请各位大中小牛勿喷。
初识PHP(一)的更多相关文章
- Android动画效果之初识Property Animation(属性动画)
前言: 前面两篇介绍了Android的Tween Animation(补间动画) Android动画效果之Tween Animation(补间动画).Frame Animation(逐帧动画)Andr ...
- 初识Hadoop
第一部分: 初识Hadoop 一. 谁说大象不能跳舞 业务数据越来越多,用关系型数据库来存储和处理数据越来越感觉吃力,一个查询或者一个导出,要执行很长 ...
- python学习笔记(基础四:模块初识、pyc和PyCodeObject是什么)
一.模块初识(一) 模块,也叫库.库有标准库第三方库. 注意事项:文件名不能和导入的模块名相同 1. sys模块 import sys print(sys.path) #打印环境变量 print(sy ...
- 初识IOS,Label控件的应用。
初识IOS,Label控件的应用. // // ViewController.m // Gua.test // // Created by 郭美男 on 16/5/31. // Copyright © ...
- UI篇(初识君面)
我们的APP要想吸引用户,就要把UI(脸蛋)搞漂亮一点.毕竟好的外貌是增进人际关系的第一步,我们程序员看到一个APP时,第一眼就是看这个软件的功能,不去关心界面是否漂亮,看到好的程序会说"我 ...
- Python导出Excel为Lua/Json/Xml实例教程(一):初识Python
Python导出Excel为Lua/Json/Xml实例教程(一):初识Python 相关链接: Python导出Excel为Lua/Json/Xml实例教程(一):初识Python Python导出 ...
- 初识SpringMvc
初识SpringMvc springMvc简介:SpringMVC也叫Spring Web mvc,属于表现层的框架.Spring MVC是Spring框架的一部分,是在Spring3.0后发布的 s ...
- 初识redis数据类型
初识redis数据类型 1.String(字符串) string是redis最基本的类型,一个key对应一个value. string类型是二进制安全的.意思是redis的string可以包含任何数据 ...
- Redis初识、设计思想与一些学习资源推荐
一.Redis简介 1.什么是Redis Redis 是一个开源的使用ANSI C 语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value 数据库,并提供多种语言的API.从2010 年 ...
- MongoDB【第一篇】MongodDB初识
NoSQL介绍 一.NoSQL简介 NoSQL,全称是”Not Only Sql”,指的是非关系型的数据库. 非关系型数据库主要有这些特点:非关系型的.分布式的.开源的.水平可扩展的. 原始的目的是为 ...
随机推荐
- CodeForces 450B Jzzhu and Sequences (矩阵优化)
CodeForces 450B Jzzhu and Sequences (矩阵优化) Description Jzzhu has invented a kind of sequences, they ...
- tmux终端复用/tmate终端共享
目录 tmux tmate tmux 一种终端复用工具,是终端中的窗口管理器.常见的一种用途是在关闭父shell时保持程序运行(常用于ssh访问断开连接后保持运行).linux上可通过包管理器进行安装 ...
- MySQL存储引擎对比
MySQL存储引擎对比 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.MySQL的存储引擎 大家应该知道MySQL的存储引擎应该是表级别的概念,因为我们无法再创建databas ...
- centos内存自动清理脚本及限制tomcat内存占用
使用crontab定时每天自动清理系统内存 00 00 * * * /root/Cached.sh [root@localhost ~]# cat Cachec.sh #! /bin/bash# ca ...
- bzoj千题计划253:bzoj2154: Crash的数字表格
http://www.lydsy.com/JudgeOnline/problem.php?id=2154 #include<cstdio> #include<algorithm> ...
- python 基础部分重点复习整理--从意识那天开始进阶--已结
pythonic 风格编码 入门python好博客 进阶大纲 有趣的灵魂 老齐的教程 老齐还整理了很多精华 听说 fluent python + pro python 这两本书还不错! 元组三种遍历, ...
- java关于图片处理修改图片大小
最近做了一个关于图片浏览的内容.因为图片都是一些证件的资料的扫描件所以比较大,对系统的影响也是非常之大的,有很大可能直接把系统干死.那么我是这么处理的,给大家分享一下.如果大家有好的方案的话一定要早点 ...
- sqlserver2008R2数据库自动备份脚本
CREATE proc [dbo].[usp_autoBackupDB] @dbname sysname=null --要备份的数据库名,不指定即为全部备份 ,)='d:\' --备份目录路径 ,)= ...
- 解决Tomcat6解压版在64位windows系统上无法启动服务的问题
解决Tomcat6解压版在64位windows系统上无法启动服务的问题 由于客户环境为64位windows系统,开发环境一直用32位.tomcat使用6.0.20非安装版.部署时发现在 ...
- Python基础教程-第3版(文字版) 超清文字-非扫描版 [免积分、免登录]
此处免费下载,无需账号,无需登录,无需积分.收集自互联网,侵权通知删除. 点击下载:Python基础教程-第3版 备用下载:Python基础教程-第3版