PHP学习记录之数据类型

<?php


// 标量类型:String(字符串), Integer(整型), Float(浮点型), Boolean(布尔型)
// Array(数组), Object(对象), NULL(空值),resource(资源类型)

 

// String字符串
echo "<br>==========================字符串==============================<br>";
$a='hello word';
echo $a;
echo "<br>a的值是:".$a; //a的值是:hello word
echo "<br>a的值是:$a"; //a的值是:hello word
echo '<br>a的值是:$a'; //a的值是:$a, 单引号里不识别 $
echo "<br>$a的值是:$a"; //error,会把 a的值是:当成变量名
echo "<br>\$a的值是:$a"; //$a的值是:hello word, 转义


//整型
echo "<br>==========================整型==============================<br>";
$a=123;
var_dump($a);
echo "<br>";
$a=-123;
var_dump($a);
echo "<br>";
$a=0x2B;
var_dump($a);
echo "<br>";
$a=045;
var_dump($a);
echo "<br>";
// var_dump() 方法,判断一个变量的类型与长度,并输出变量的数值,如果变量有值,则输出是变量的值,并返回数据类型。显示关于一个或多个表达式的结构信息,包括表达式的类型与值。数组将递归展开值,通过缩进显示其结构。
//进制之间相互转换
echo "<br>==========================进制转换==============================<br>";
$n = 123;
$v1 = decbin($n);
echo '<br>v1='.$v1; //v1=1111011
$v2 = decoct($n);
echo '<br>v2='.$v2; //v2=173
$v3 = dechex($n);
echo '<br>v3='.$v3; //v3=7b
$v4 = bindec($v1);
echo '<br>v4='.$v4; //123
$v5 = octdec($v2);
$v6 = hexdec($v3);

$a=157;
$aa=octdec($a);
//注意:本来$a是十进制的157,用了octdec后就把$a当成八进制了
echo "<br>aa=".$aa; // 111

//浮点数
echo "<br>==========================浮点数==============================<br>";
echo "<br>";
$a=1.212;
var_dump($a);
echo "<br>";
$a=1.2e4;
var_dump($a);
echo "<br>";
$a=12e3;//这也是浮点数,虽然结果是整数

//浮点数不要随便做相等比较==,需要在精度内转换为整数再比较大小,此时在精度范围内我们认为是相等的。
$a1=0.1;
$a2=0.2;
$a3=0.3;

if ($v3==$v1+$v2) {
echo "相等";
}else{
echo "不相等"; //输出
}
// 精确到小数点后4位
if (round($v3+10000)==round($v1+$v2)*10000){
echo "相等"; // 输出
}else{
echo "不相等";
}


//布尔值boolean,bool
echo "<br>==========================布尔值==============================<br>";
$a=true;
var_dump($a);
echo "<br>";
$a='';
if ($a) {
//'',0,0.0,null,空数组,false都会被认为是布尔值false,从未不会执行下面的代码
echo $a."是true";
}else{
echo $a."是false";
}

 

//数组
//数组能够在单一变量名中存储许多值,并且能够通过索引号来访问某个值。

echo "<br>==========================数组==============================<br>";
$p = array('刘亦菲','女' ,18); //多种写法
$p1 = ['刘亦菲','女' ,18];
$p2 = array('name'=>'刘亦菲','sex'=>'女','age'=>18);
var_dump($p2); //array(3) { ["name"]=> string(9) "刘亦菲" ["sex"]=> string(3) "女" ["age"]=> int(18) }
echo "<br>姓名:$p[0] ","性别:$p[1] ","年龄:$p[2] <br>";
echo $p1[0],$p2['name']; //刘亦菲刘亦菲


//count() 函数用于返回数组的长度(元素数)
echo count($p); //3


//数据比较
echo "<br>==========================数据比较==============================<br>";
if (1=='1') {
echo "松散比较中1和'1'相等";
}
echo '<br>';

if(1==='1'){
echo "值和类型都相等";
}
else{
echo "严格比较中1和'1'不相等";
}

echo "<br>";
if (true=='true') {
echo "松散比较中true和'true'相等";
}
echo '<br>';
if(true==='true'){
echo "值和类型都相等";
}
else{
echo "严格比较中true和'true'不相等";
}

//类型判断
echo "<br>==========================类型判断==============================<br>";
$v1 = 1;
echo gettype($v1); // integer ,输出的是一个字符串
echo gettype(gettype($v1)); // string
$v2 = "hahaha";
echo gettype($v2); // string

//settype():设置变量类型
$v1 = 10;
settype($v1,'string');
echo gettype($v1); // string

$v1 = 10;
settype($v1,'array');
echo "<br>$v1[0]",gettype($v1),gettype($v1[0]); // 10,array,integer

//判断类型
$a='1';
echo "<br>",is_int($a); //无输出
echo "<br>",is_string($a); // 1
var_dump(is_string($a)); // bool(true)
echo "<br>",is_bool($a); //
var_dump(is_bool($a)); // bool(false)


if (is_numeric('23')) { //is_numeric 检测变量是否为数字或数字字符串
echo "haha"; //输出:haha
}


/*
两个特殊判断:
isset():判断一个变量是否存在,或变量中是否有数据,有则返回true,否则返回false;
empty():判断是否为“空的”。如果确实是“空的”,返回true,否则返回false;
“空的”的意思,比较接近日常生活中的“没有”。以下值都是空的(empty) :
0,0.0, "", "0", false, array()
而空(null) 是一个计算机中的特殊概念,表示“完全不存在”,可以理解为“真空”。
*/


echo "<br>==========================自动转换==============================<br>";

// 程序会根据运算时运算符所需的数据类型进行转换,如果参与运算的数据类型不是需要的类型,则会自动转换为需要的数据类型。


echo 1+'2'; //3
echo '1'+'2'; //3
echo '1'+'2'; //3
echo 1+'2abc'; //3, 会有warning:A non well formed numeric value encountered
echo 1+'2abc34'; //3
echo 1+'abc'; //1
echo 1+'abc34'; //1
echo 1.2+'2'; //3.2
echo '1.2abc'+'2abc'; //3.2
echo '<br>';
var_dump ('1.0'+1-1) ; // float(1)
echo '1.0'+1-1; //1 ,注意,这种输出省略了后面的0
$a=1.20;
echo $a; //1.2

// 规律:一个字符串当做数字,就会将该字符串的最前面的数字转换为数字值,如果没有,就为0

// 转换为整数:则直接保留整数部分

echo 10.8 % 3.9 ; //1
echo '10.8' % '3.6'; //1
echo '10.8a' % '3.6bc'; //1 会有warning:A non well formed numeric value encountered


echo "<br>==========================强制转换==============================<br>";
$b='2.9';
$a = (int)$b;
echo $a; //2,直接去除小数点后的值
echo $b; //2.9,原值不变
var_dump($a); //int(2)
$a = (string)$a;
var_dump($a); //string(1) "2"

echo "<br>==========================NULL值==============================<br>";
// 特殊的 NULL 值表示变量无值。null 是数据类型 NULL 唯一可能的值。
// NULL 值标示变量是否为空。也用于区分空字符串与空值数据库。
// 可以通过把值设置为 NULL,将变量清空

$x="Hello world!";
$x=null;
var_dump($x); // NULL


?>

练习:

  写一个十进制转换成其他进制的网页。

 

 

 

 

 

 

 

posted @ 2020-02-23 17:00  天青色wy  阅读(170)  评论(0编辑  收藏  举报