首先就来说一下,数据类型转换的一个问题:
我们知道小的数据类型可以自动向大的数据类型转换,从而不会造成精度缺失的问题。
这里就说一下php的运算规则:
运算数在参加运算的时候,需要将数据类型转换为相同的数据类型参与运算,至于怎么来转,那就是说,小的自动变成大的数据类型。依照大的数据类型为基准。
我们要对一个变量进行数据类型转换,直接在变量前面加上(类型名)就可以了。
下面来说一下细节:
php字符串可以看成数组处理,也就是说可以通过下标来取出里面的单个字符,只是它是字符串类型。这里符合c语言的一种处理方法。
header("Content-type:text/html;charset=utf-8");
$str1="love";
echo $str1[0]."<br/>";
echo $str1[1]."<br/>";
echo $str1[2]."<br/>";
echo "好像字符串不能处理中文<br/>";
php中的字符串也是以’\0’来处理,转换成ascii码就是0
而字符串里面的空格,变成ascii码就是32,空字符。
简单来说一下运算符优先级
不管怎么样,括号的优先级始终是最高的,然后是点的优先级也比较高。
正负的优先级也算是比较高的。过了就是++,--,按位取反(~),逻辑非(!)的优先级也算是比较高的,都是第二级。位运算符的优先级比逻辑运算符的优先级高,同时,按位与(&)与逻辑与(&&)的优先级相对来说又要高一点。赋值运算的优先级是最低的,上面就是三目运算符的优先级(倒数第二级)。
下面简单来说一下php转换规则:
下面是转换成字符串的一些规则:
一个整数或者浮点数被转换成数字的字面样式的字符串。
一个boolean TRUE 值被转换成字符串 1,boolean FASLE 被转换成””
数组被转换成字符串’array’
资源总是被转变成”Resource id #1”这种结构的字符串
NULL总是转变成空的字符串
下面是转换成整型的一些规则:
从布尔值转换 FALSE->0 TRUE->1
从浮点数转换的时候,向下面取整
从字符串转换的时候,如果字符串没有包含. e与E,并且数字值符合整数类型限定,可以被人认为是一个int,否则被认定是一个float.字符串的开始部分给定了它的值,如果字符串以合法数字开始,这个数字可以直接使用。否则值就是0
我们看一下下面的代码处理:
$bool_value1=true;//1
$bool_value2=false;//0
$str_value1='A';//ascii码是65,很明显会变成0,因为它不符合整数类型限定
$str_value2="asx";//0,不符合数字规定,当成0进行处理
$str_value3="3.1415926asd";//因为有.,所以就变成3.1415926,当成一个整型处理
$str_value4="6dcbuyd25sc";//6
echo $bool_value1+$bool_value2."<br/>";//结果就是1+0=1
echo $str_value1+$str_value2."<br/>";//0+0=0
echo $str_value3+$str_value4."<br/>";//3.1415926+6=9.1415926
下面是转换成bool的一些规定:
当转换成boolean时,以下值被认为是FALSE
布尔值FALSE本身
整型0
浮点数值0.0
空字符串,以及字符串”0”(注意“00”“0.0”被认为是TRUE),字符串单个0被认为是假的。
空数组
特殊类型NULL
上面除了浮点数0.0是假,其余的字符串双个0都是真。
$value1="0";//这个是假
if($value1)
{
echo $value1."是真的<br/>";
}else
{
echo $value1."是假的<br/>";//会走这一条路线
}
$value2="0.0";//这个是真的
if($value2)
{
echo $value2."是真的<br/>";//会走这一条路线
}else
{
echo $value2."是假的<br/>";
}
我们下面笼统的来说一下,运算符。
什么算术运算符+ - * / %就不多说了,运算符优先级也是比较高的。
乘除取余优先级是3级
+与-的优先级是4级
下面来说一下赋值运算符=,这个运算符的优先级也是最低的。
再来说一下比较运算符
==
!=
<>
!==
<
>
上面的优先级大致在第六级七级
在来说一下,递增,递减运算符。++ --这个优先级与正(+)和负(-)优先级一样高,而且
注意这个运算符的前++与后++是不一样的。前--与后--也是不一样的。
不同的运算顺序也是不一样的。
一般来说后++就是先使用在自增,而前++就是先自增在使用。当然--的用法一样。
在考虑一个数的结果的时候,我们呢注意考虑一个数的时候,考虑这个数在此时的值是什么?
下面我们来说一下逻辑运算符
其实这些运算符对我们编写程序来说特别重要,常见的逻辑运算符,比如&&(逻辑与)||(逻辑或)!$a(逻辑非)对于逻辑非来说,如果一个数为假,那么!就为真,如果一个数为真,非(!)的结果就为假。这里插足一个按位非(~),就是位运算中0变成1,而1变成0。
来说一下^(异或),这个也就是说,两个数参与运算,不同为1,相同为0。
上面这个逻辑非(!)与按位非(~)这两个运算符优先级还是比较高的,都是排在了2级。
下面就该来说位运算符。
php基础第二篇就先说到这。下次再来所一篇。