数据类型
8种基本类型
4种标量类型
boolean,integer,float|double,string
2种复合类型
array,object
2种特殊类型
resource,NULL
boolean bool //所有为0为NULL或未定义的数据会转换为FALSE.
interger int //Z={... , -2,-1,0,1,2, ...}; 0八进制数; 0x 十六进制;
regex:
decimal:[1-9][0-9]*|0
hexadecimal:0[xX][0-9a-fA-F]+
octal:0[0-7]+
integer:[+-]?decimal|[+-]?hexadecimal|[+-]?octal
如果给定的一个数超出了 integer 的范围,将会被解释为 float。
当从浮点数转换成整数时,数字将被取整(丢弃小数位)。
如果浮点数超出了整数范围(通常为 +/- 2.15e+9 = 2^31),则结果不确定,因为没有足够的精度使浮点数给出一个确切的整数结果。在此情况下没有警告,甚至没有任何通知!
float double//1.23 1.2e3 7e-10
regex:
LNUM [0-9]+
DNUM ([0-9]*[\.]{LNUM}) | ({LNUM}[\.][0-9]*)
EXPONENT_DNUM ( ({LNUM} | {DNUM}) [eE][+-]? {LNUM})
!!!! 0.1+0.7*10==7.9999... so floor((0.1+0.7)*10)==7
string //字符串
定义方式:单引号,双引号,界定符
单引号: 和其他两种方式不同变量和转义序列不会被变量的值替换,除了\',单引号之前和字符串结尾需要两个\\.
双引号:支持更多的转义字符\n \r \\ \$ \t \" \[0-7][1,3] \x[0-9a-fA-F]{1,2}
界定符:
另一种给字符串定界的方法使用定界符语法("<<<")。应该在 <<< 之后提供一个标识符,然后是字符串,然后是同样的标识符结束字符串。
结束标识符必须从行的第一列开始。同样,标识符也必须遵循 PHP 中其它任何标签的命名规则:只能包含字母数字下划线,而且必须以下划线或非数字字符开始。
不能用定界符语法初始化类成员。 当用双引号或者定界符指定字符串时,其中的变量会被解析。
{$great}
${great}
{$square ->width}
{$arr[ 4][3]}
{$arr [foo][3]}
{ $obj->values[3]->name }
{${$name}}
字符串可以用"."(点)运算符连接。注意这里不能用"+"(加)运算符。
$str{strlen( $str)-1} = 'e';
$third = $str{2 };
strval() 转换为字符串get_class()获取类名 数组 'Array' 对象 'Object' 资源 'Resource id #1'
get_resource_type()。
$str=chr(ascii number).
$intv=ord(string);
sprintf(string format[,mixed args[,mixed...]]);//格式化输出 %bcdeufFosxX
php5文档中使用的伪类型
mixed,number,callback
mixed//可以接收多种不同类型的数据
number//integer or float
callback//接收一个function为参数,可以是一个function也可以是对象的方法或静态类的方法
//打印变量的相关信息
var_dump(mixed expression[,mixed expression[,...]]);
//打印关于变量的易于理解的信息
print_r(mixed expression[,boolean return]);
<?php $b=array('m'=>'monkey','foo'=>'bar','x'=array('x','y','z'));
$results=print_r($b,true);echo $results ?>
code print_r_xml.php
<?php
header('Content-Type: text/xml; charset=UTF-8' );
$b=array( 'm'=>
"monkey",'foo'=>"bar" ,
'x'=>array( 'x'
,'y','z' ));
echo print_r_xml($b);
function print_r_xml($arr,$first=
true) {
$output = "";
if ($first)
$output .= "<?xml version=\"1.0
\" encoding=\"UTF-8
\"?>\n<data>
\n";
foreach( $arr as
$key => $val) {
if (is_numeric(
$key)) $key = "arr_".$key
; // <0 is not allowed
switch (gettype(
$val)) {
case "array":
$output .= "<".htmlspecialchars
($key) ." type='array' size='".count
( $val)."'>".
print_r_xml( $val,false).
"</".htmlspecialchars ($key)
."> \n";
break;
case "boolean":
$output .= "<".htmlspecialchars
($key )." type='bool'>".(
$val? "true":"false"
).
"</".htmlspecialchars($key
).">\n"
; break;
case "integer":
$output .= "<".htmlspecialchars
($key)." type='integer'>".
htmlspecialchars($val).
"</" .htmlspecialchars($key)
. ">\n";
break ;
case "double":
$output .= "<".htmlspecialchars
( $key)." type='double'>".
htmlspecialchars($val).
"</" .htmlspecialchars($key)
. ">\n";
break ;
case "string":
$output .= "<".htmlspecialchars
( $key)." type='string' size='".strlen
($val)."'>".
htmlspecialchars($val).
"</".htmlspecialchars($key )
.">\n";
break;
default:
$output .= "<".htmlspecialchars
($key) ." type='unknown'>".gettype
( $val).
"</".htmlspecialchars ($key
).">\n "
; break;
}
}
if ($first)
$output .= "</data>\n"
;
return $output;
}
?>
//获取变量的类型
gettype(mixed var);
returns: boolean,integer,(double|float)=>double,string,array,object,resource,NULL,object,'unknown type'
//设置变量类型
settype(mixed var,string type);
//强制类型转换
(int|integer),(boolean|bool),(float|double|real),(string),(array),(object)
//自动类型转换
$floatvalue='1 one'+2+3.2==6.2
//操作字符串
$str='abc';
$str[1]=$str{1}=='b';//推荐使用{1},而不推荐使用[1]以免和数组混淆
is_object(),is_array(),is_bool(),is_float(),is_integer(),is_null(),is_numeric(),is_resource(),is_scalar(),is_string()
is_scalar(mixed var) ;//是否是integer,string,boolean,float类型
--
[:p] --fallseir.lee
没有评论:
发表评论