数据类型
整体划分
  标量类型: int, float, string, bool
  复合类型: array, object
  特殊类型: null, resouce
  整数类型int, integer

3种整数表示法
十进制写法:123:
$n1 = 123;
八进制写法: 0123
$n2 = 0123;
十六进制写法: 0x123
$n3 = 0x123;

进制转换问题
先学习几个单词:
dec: 十进制
bin:二进制
oct:八进制
hex:十六进制
十进制转二进制decbin(),除2取余倒着写
$v1 = decbin(123); //注意:参数必须是10进制数字,转换后的结果必然是二进制字符串。

十进制转八进制decoct(),除8取余倒着写
使用php系统函数: 
$r1 = decoct(十进制数字); //结果是一个8进制数字字符串。

系统函是:dechex(十进制数字), 结果是16进制数字字符串。

二进制转10进制,就是将每位数值乘以对应位上的权值,然后相加得到的结果。
用系统函数是:
$v1 = bindec(“二进制数字字符串”) ;//得到的结果是10进制数字

八进制转十进制octdec() ,每位数值乘以8的权值然后相加
用系统函数是:
$v1 = octdec(“8进制数字字符串”) ;//得到的结果是10进制数字

十六进制转十进制hexdec() ,每位数值乘以16的权值然后相加
用系统函数是:
$v1 = hexdec(“16进制数字字符串”) ;//得到的结果是10进制数字

注意:十进制转为其他进制结果是字符串,其他进制转为十进制要求给定数据是字符串形式

字符串类型string
php中双引号字符串自动识别变量

布尔类型:bool, boolean
用于标识某种只有两个状态值的数据:true,false——吃没吃,去没去,有没有。。。。。
在应用出,我们常常会(需要)直接将一个数据(可能是各种其他类型)当作一个布尔值来进行判断。
那么此时其实发生的是:会将该数据隐含转换为布尔值。

数组类型array
标识一系列数据的“有序排列”的集合体。
php中,数组的下标可以使用整数或字符串。
数字下标常说“索引号”,
字符串下标常说“键名”。
实际上,在php的报错系统中,都叫做“index”,或offset
数组中还可以存储数组,就可以构成“多维数组”的形式。
数组遍历在php中有专门语法:

foreach( 数组名 as 下标变量$k => 值变量$v1 ){
//这里就是循环体,就可以使用两个变量$k, $v1
}

对象类型object
在php中,对象跟js中的有比较大的区别。
通常,js中的对象,有自定定义的(创建的),也有“现成”,比如window,location,标签对象。
但:
php中的对象,通常都是指自己定义的对象,纯语法的。

资源类型resource
含义:基本上都是指对外部数据的引用。(数据非php代码生成的)
不是PHP语言通过某种语法形式“创造”的数据,而是外部本来就有该数据(比如数据库,文件,图片),PHP只是通过某种语法(或方式)来对其进行某些操作。

空类型null
只是一个计算机中编程领域的“概念”类型,只是为了表达变量所存储的数据的某种特殊情形所创建的概念——没有存数据,或没有存有效的有意义的数据

类型转换
自动转换:
通常自动转换是弱类语言的一个最基本也最方便的一个特征:它会在各种运算中根据运算符的需要也将非该运算符所能处理的数据转换为可以处理的数据。常见情形如下:
if(数据){}:转为bool类型
算术运算符:转为数字类型
连接运算符:转为字符串类型
比较运算符:转为布尔类型或数字类型
两边如果有至少一个布尔,则另一边就会转为布尔,并进行比较
否则,就转为数字进行比较

与类型相关的系统函数
var_dump():能够输出一个变量的完整信息。
getType():获取一个变量的类型名称,结果是一个单词(字符串), setType();设置一个变量的类型,语法: setType(变量名,目标类型)

isset(), empty(), unset();
isset()判断一个变量是否存在数据:
empty()判断一个数据是否为空:接近我们的日常观念(没有就是空)
unset():销毁(删除)一个变量。
is_XX类型() 系列函数:判断某个数据是否是某种类型,包括:
is_int(), is_float(), is_numeric(),is_bool(), is_array(), is_scalar():
is_numeric()对:3, 3.5,“3”,“3.14”判断都是true
is_scalar():判断是否为标量类型(即int,float,stirng,bool)

运算符
算术运算符
有以下几个:+ - * / % ++ --
注意:注意取余运算%,先取整,再取余
$v1 = 7.5 % 3; //结果是:1
$v2 = 7.5 % 3.5; //结果是:1
对比js中:——js中, 不会进行取整处理
var v1 = 7.5 % 3; //结果是:1.5
var v2 = 7.5 % 3.5; //结果是:0.5
自增自减运算符:
常规:对数字进行自加1或自减1。
字符串: 只能自增,且自增的效果就是“下一个字符”

布尔值递增递减无效
null递减无效,递增结果为1
前加加和后加加的区别:
前++:先完成变量的递增运算,再取得该变量的值参与别的运算。
后++:先将原来变量的值临时存储,再将变量值递增,最后再将临时存储的值参与别的运算。
推论1:如果独立语句中进行自加运算,前自加后自加没有区别 。
推论2:如果前自加后自加是放在别的语句中,则会有所区别。
推论3: 前加加比后加加效率略高(在循环中建议使用前加加)。

比较运算符:
包括:> >= < <= ==松散相等 != ===严格相等 !==

==和===的区别:
==:松散相等,比较的是两个数据“类型转换之后”是否有可能相等,也常常认为是“数据内容是否相同”
===:严格相等,全等,只有两个数据的类型和数据的内容都完全一致,才相等。

常见不同类型的比较(主要指标量类型的数据)——非正常比较
正常比较——数字的大小比较
如果有布尔值,均转为布尔值比较:规则:true > false
否则,如果有数字,均转为数字比较:
否则,如果两边都是纯数字字符串,转为数字比较
否则,就按字符串比较

字符串的比较规则为:按字符的先后顺序依次一个一个比较,发现哪个大,则就表示整体大,后续不再比较

逻辑运算符:&& || !
前提:都是针对布尔类型的值进行的运算,如果不是布尔,就会转换为布尔。

逻辑与:
规则(真值表):
true && true ==> true;
true && false ==>false
false && true ==>false;
false && false ==>false;
只有两个都是true,结果才是true
只要有一个是false,结果就是false
逻辑或:
规则(真值表):
true || true ==> true;
true || false ==>true
false || true ==>true;
false || false ==>false;
只有两个都是false,结果才是false
只要有一个是true,结果就是true
逻辑非:
!true ==> false
!false ===>true
短路现象之逻辑与短路:
在实际应用中,参与逻辑运算的数据,往往都不是直接的布尔值,而是有关计算之后的布尔结果值。
大致如下:
if( IsFemale( $uName ) && isAge($uName) > 18){
......echo “女士优先”
}
此时,如果IsFemale()函数判断的结果是false,那么后续的函数isAge()就不再调用,自然也不再进行大于18的判断,这是就称为“短路现象”
短路现象之逻辑或短路:
if( IsFemale( $uName ) || isAge($uName) < 18){
......echo “有限照顾女士或未成年人”
}
此时,如果IsFemale()函数判断的结果是true,那么后续的函数isAge()就不再调用,自然也不再进行小于18的判断,这就是“或运算符短路现象”

字符串运算符:
只有一个: .
衍生一个: .=
会将运算符两边的数据转换为字符串。
对比js:+(具有双重含义,此时就需要一定的“判断”)

赋值运算符:
只有一个: =
衍生多个: += -= *= /= %= .=
基本形式为:
$变量 符合赋值运算符 数据2;
这些衍生的赋值运算符,是这种运算的一个简化形式:
$v2 = $v2 [运算符] 数据2;//某个变量跟另一个数据进行某种运算之后的结果再存入该变量
对比(它不是这种形式的简化):
$v2 = 数据2 [运算符] $v2; //这种形式不应该简化

条件(三目)运算符:
一般的运算符需要2个数据参与
有几个运算符只需要一个数据参与: ++, -- !
则:
条件运算符就需要至少3个数据参与!
形式为:
数据1 ? 数据2 :数据3
通常,数据1最终应该是一个布尔值(如果不是,则会当作布尔值来使用)。
含义:
如果数据1为true,则运算结果为数据2, 否则运算结果为数据3
典型举例:
$score = 66;
$result 1= $score >= 60 ? “及格” : “不及格”; //结果是“及格”

$result 2= $score ? “及格” : “不及格”; //结果是“及格”,但含义完全不同,因为即使分数是33,也是及格。只有分数为0才是不及格。

三目运算符可以转换为if else语句来实现:
if( $score >= 60){
$result1 = “及格";
}
else{
$result1 = “不及格";
}

php基础知识(2)的更多相关文章

  1. .NET面试题系列[1] - .NET框架基础知识(1)

    很明显,CLS是CTS的一个子集,而且是最小的子集. - 张子阳 .NET框架基础知识(1) 参考资料: http://www.tracefact.net/CLR-and-Framework/DotN ...

  2. RabbitMQ基础知识

    RabbitMQ基础知识 一.背景 RabbitMQ是一个由erlang开发的AMQP(Advanced Message Queue )的开源实现.AMQP 的出现其实也是应了广大人民群众的需求,虽然 ...

  3. Java基础知识(壹)

    写在前面的话 这篇博客,是很早之前自己的学习Java基础知识的,所记录的内容,仅仅是当时学习的一个总结随笔.现在分享出来,希望能帮助大家,如有不足的,希望大家支出. 后续会继续分享基础知识手记.希望能 ...

  4. selenium自动化基础知识

    什么是自动化测试? 自动化测试分为:功能自动化和性能自动化 功能自动化即使用计算机通过编码的方式来替代手工测试,完成一些重复性比较高的测试,解放测试人员的测试压力.同时,如果系统有不份模块更改后,只要 ...

  5. [SQL] SQL 基础知识梳理(一)- 数据库与 SQL

    SQL 基础知识梳理(一)- 数据库与 SQL [博主]反骨仔 [原文地址]http://www.cnblogs.com/liqingwen/p/5902856.html 目录 What's 数据库 ...

  6. [SQL] SQL 基础知识梳理(二) - 查询基础

    SQL 基础知识梳理(二) - 查询基础 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5904824.html 序 这是<SQL 基础知识梳理( ...

  7. [SQL] SQL 基础知识梳理(三) - 聚合和排序

    SQL 基础知识梳理(三) - 聚合和排序 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5926689.html 序 这是<SQL 基础知识梳理 ...

  8. [SQL] SQL 基础知识梳理(四) - 数据更新

    SQL 基础知识梳理(四) - 数据更新 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5929786.html 序 这是<SQL 基础知识梳理( ...

  9. [SQL] SQL 基础知识梳理(五) - 复杂查询

    SQL 基础知识梳理(五) - 复杂查询 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5939796.html 序 这是<SQL 基础知识梳理( ...

  10. APP测试入门篇之APP基础知识(001)

    前言        最近两月比较多的事情混杂在一起,静不下心来写点东西,月初想发表一遍接口测试的总结,或者APP测试相关的内容,一晃就月底了,总结提炼一时半会也整不完.放几个早年总结内部培训PPT出来 ...

随机推荐

  1. BZOJ 2956 模积和

    题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=2956 题意:给出n和m.计算: 思路: i64 n,m; i64 cal(i64 m,i ...

  2. html5 canvas移动设备渲染测试

    最近项目闲着没什么事,又想起了canvas, 针对移动端设备默认浏览器,做了点渲染方面效率的测试,手头设备不多(有一些低端机型和pc chrome做对比),现将测试数据分享给大家吧,本想和css3 a ...

  3. bigtint;int;smallint;tinyint

    bigint对应的是Int64     [long] int对应的是Int32          [int] smallint对应的是Int16  [short] tinyint对应的是  [byte ...

  4. iOS设备升级iOS7

    引自:http://lifehacker.com/how-to-upgrade-to-ios-7-right-now-1288208215 Although iOS 7 won't see an of ...

  5. Gson解析POJO类中的泛型参数

    在开发Android与API交互的时候,使用Json格式传输,遇到了这样一个情况,返回数据格式POJO类如下: public class ApiResult<T> { private in ...

  6. Android应用主界面底部菜单实现

    介绍 现在绝大多数主流的应用主界面,都会包含一个底部菜单,就拿腾讯的QQ与微信来说,看起来是这样的  <---我是底部菜单 原理 在很久以前,可以通过TabActivity实现相关功能,自从Fr ...

  7. Android开源库--PhotoView图片查看

    如果说我比别人看得更远些,那是因为我站在了巨人的肩上. github地址:https://github.com/chrisbanes/PhotoView 介绍 在一般的应用中,总会遇到查看图片的功能, ...

  8. laravel小抄

    原文地址:http://cheats.jesse-obrien.ca/ Artisan // Displays help for a given command php artisan --help ...

  9. bzoj2119

    题意就是差分后求形如ABA的串的个数,B的长度为M 这是2011国家集训队互测的试题,是道好题,我直接给出出题人的题解吧: 对于这种在线性序列上的组合计数问题,我们很容易想到一个工具:分治!分治算法在 ...

  10. linux 2.6up的设备和设备驱动模型

    在linux2.6 的设备和设备驱动模型构架中,所有的外部设备和驱动程序都挂在总线上 ,总线分为(usb   -- USB设备,PCI  -- PCI 设备 platform --   直接和处理器进 ...