php兄弟连学习30-60
整型
浮点型
整型的最大长度
32位表示二进制数表示
整数是由32位二进制保存的
数据里面没有无符号一说
hello world
h e l l o
a->97
b->98
c->99
d 100
e 101
f 102
g 103
h ->104
echo ord('h');
h是104一个整型,它是由一个32位的二进制存储的
00000000 00000000 00000000 00000000
高电频 低电频
64 + 32 + 8
00000000 00000000 00000000 01101000
104
h
一共31位存储位 一号符号位1负数 0整数
最前面的是符号位置最大的是2的31次方
-2147483648~2147483648
$a = 10;
$b = 077; 八进制
$c = 0xff; 十六进制
超过整数就是浮点了
-------------------------------
浮点数
单精度+双精度
小数点后面一位 和 两位
4个字节
3e17 3*10 17次方
3e-3 0.003
3e3 3000
浮点数不要进行等号判断
<script>
var a = 0;
for(var i=0;i<10;i++){
a+=0.1;
}
alert(a);0.99999999
</script>
$a = floor((0.1+0.7)*10);---7
(0.1+0.7)*10-》7.9
浮点说计算不准确
永远不要相信浮点数结果精确到了最后一位
永远不哟啊比较两个浮点数是否相等(可以转换成整数要想精确)
-------------------------------
字符串类型
单引号或双引号来注明
php不分一个和多个字符,单双引号都可以
在单双引号里可以使用转义字符\,可以让有意义的字符变的无意义
在php中类似js中的字符,不分单个字符和字符串。
php中的单引号和双引号的区别。
js中的变量需要用+号连接
在双引号中可以解析变量,但在单引号中不行。
$int = 10;
$a= 'this is $int a '; this is $int a
$a= “this is $int a ”; this is 10 a
使用特殊字符分开() 空格等分开
\n
\r
\t
\$
\\
\"
在双引号中可以使用转义字符,在单引号中不能使用(在单引号中只能使用转义字符转义单引号'this is \'a\'',还可以转义转义字符本身)
功能简单效率高 能用单引号就用单引号
尽量都用单引号
主要区别:
双引号中可以使用变量
双引号中可以使用转义字符,而单引号中只能使用有限的
-------------------------------
使用定界符
1.使用<<<小于号
2.在开始的定界符(自定义的字符串中)一定要左边挨着<<<,写完直接回车
结束的标记一定顶格写连空格都不能有加分号直接回车
3.使用单引号在开始的定界符号中。这样将支持双引号的功能转成单引号功能。php5.3新功能
-------------------------------
8中数据类型
整型
浮点型
boolean
字符型
数组
对象
资源
null
伪类型:不是真正的类型是为了说明函数的类型 @param number $a 整型浮点型 @param mixed 任何类型 @param callback 函数作为参数
-------------------------------
php数据类型之间的转换和检测
1.强制转换
var_dump();
getType();---获取变量的名称字符串
$arr = 1;
echo getType($arr);
A.setType(变量,类型);
$arr = 10;
setType($arr,"string");
echo getType($arr);
B.在变量使用时前面加上类型符号!!good.
$a = "100";
$arr=(double)$a;
C.intval();floatval();strval();
(int)
(boolean)
(float)
(string)
(array)
(object)
资源不能转换
2.自动转换
类型测试的函数
强类型语言里不用判断类型。弱类型语言里需要判断类型。
判断类型
is_bool()
is_array()
is_string()
is_int()
is_float()
is_object()
is_resource()
is_null()
is_scalar()
is_callable()
empty()内容是否为空
is_null()类型是否为空
-------------------------------
常量的声明和使用
常量:一旦声明,这个常量的值就不会改变
$a = 10;
是在栈内存里存储的。
内存是分4个地方存储的。
常量存放在初始化静态段。
常量使用函数声明
1.define()声明的
2.如果常量没有声明,常量名使用会自动转换成字符串 效率很低 慢8倍
3.常量名称前面不要加$符号
4.常量名称区分大小写的 习惯上全部大写
5.可以使用define第三个参数来让这个常量名称来区分大小写,默认是假
6.常量的值只支持标量数据类型4种整型浮点型字符串布尔值
7.不能使用unset()清除一个常量
8.使用defined判断一个常量是否存在
9.常量的范围是全局的。在哪都可以访问
echo constant()读取常量的值
get_defined_constants();读取所有的常量列表
预定义常量
PHP预定义的一些常量
php每个扩展包里有很多常量
-------------------------------
运算符号
一元运算符 !
二元运算符 + - * / > < =
三元运算符 ? :
算术运算符号 + - * / % ++ --
赋值运算符号 = += -= /= %=
比较运算符号 > < == >= <= != !==
逻辑运算符号 && || !
位运算符号 & | ^ >> << ~
其它运算符号 ? : @ ->
/分母不能为0
+没有连接字符串作用
转换成整数再求模
++操作
$a = true;
$a++; true
不参与运算
字符串的++就是升序
a b c d
赋值运算符
=
+=
-=
*=
/=
%=
.=
比较运算符
1.结果是boolean用if while等语句中
全等===弱类型才有这个。值相等 元类型相等
!==
<> !=
逻辑运算符
and &&
or ||
not !
xor 必须只有一个为真才是真
求模
逻辑运算符
短路现象 最短捷径
die("输出并退出程序");
赋值运算符石最低的
布尔值不参与++运算
$a = 0;
$b = 0;
if($a=3 && $b=3){
$a++;
$b++;
}
echo ($a."-".$b);
位运算符
效率高
按位运算
104由32位0和1二进制组成
0 0000000 00000000 00000000 00000000
& | ^ ~ << >>
&两个都为1的才是1 12 & 13 -> 12
&它也可以进行逻辑判断,但是不短路与&&不一样
|没有短路的现象
^异或只有两个不同才是1
~按位取反 单个算
左移动
右移动
12<<2 *2
12>>2 /2
其它运算符
? :
``反引号 里面是操作系统的命令 exec() system() -ifconfig linux下的ip
@ 屏蔽临时错误信息 echo @$a; @gettype1();
表达式:有变量和运算符参与的事子就是表达式
优先级用括号解决
流程控制
1.顺序结构
2.分支结构 if else elseif switch
3.循环结构
巢状分支语法
<?php
if(isset($_POST["sub"])){
$bool = true;
$message = "有以上问题:<br/>";
if(empty($_POST["num1"])){
$bool = false;
$message .= "第一个数值不能为空";
}else{
if(empty($_POST["num2"])){
$bool = false;
$message .= "第二个数值不能为空";
}
}
if(!is_numeric($_POST["num1"])){
$bool = false;
$message .= "第一个数值不是数字不能计算";
}else{
if(!is_numeric($_POST["num1"])){
$bool = false;
$message .= "第二个数值不是数字不能计算";
}
}
$num1 = $_POST["num1"];
$num2 = $_POST["num2"];
$sum = "";
switch ($_POST['ysf']) {
case '+':
$sum = $num1 + $num2;
break;
case '-':
$sum = $num1 - $num2;
break;
case '*':
$sum = $num1 * $num2;
break;
case '/':
$sum = $num1 / $num2;
break;
case '%':
$sum = $num1 % $num2;
break;
}
}
?>
<html>
<head>
<title></title>
<meta charset="utf-8">
</head>
<body>
<form action="index.php" method="post">
<table border="0" width="400" align="center">
<caption><h1>简单计算器</h1></caption>
<tr>
<td>
<input type="text" size="5" name="num1" value="<?php echo $_POST["num1"] ?>">
</td>
<td>
<select name="ysf">
<option <?php if($_POST["ysf"]=="+") echo "selected"; ?> value="+">+</option>
<option <?php if($_POST["ysf"]=="-") echo "selected"; ?> value="-">-</option>
<option <?php if($_POST["ysf"]=="*") echo "selected"; ?> value="*">*</option>
<option <?php if($_POST["ysf"]=="/") echo "selected"; ?> value="/">/</option>
<option <?php if($_POST["ysf"]=="%") echo "selected"; ?> value="%">%</option>
</select>
</td>
<td><input type="text" size="5" name="num2" value="<?php echo $_POST["num2"] ?>"></td>
<td>
<input type="submit" name="sub" value="计算" />
</td>
</tr>
<tr>
<td colspan="4">
<?php
if($bool){
echo "计算结果:{$_POST['num1']}{$_POST['ysf']}{$_POST['num2']}=$sum";
}else{
echo $message;
}
?>
</td>
</tr>
</table>
</form>
</body>
</html>
循环结构
while break;
do{}while();
for
break
continue;
exit;-程序到这里就结束了 die();
goto
echo 11111;
goto nz;
echo 22222;
echo 3333;
nz:
echo 4444;
echo 55555;