DevOps开发运维
成长之路

PHP中的8种数据类型

标量类型

特点:只能存储单一数据。

1.整型(int|integer)

整数,十进制,八进制,十六进制。

int.php

<?php

//整型的例子

//声明整型

//十进制数字

$int = 123;

$var = 123;

echo $var;
echo '<br />';

$int = 0;
$int = -12;
var_dump($int);

//声明16进制数

$var = 0123;
var_dump($var);
echo '<hr/>';
//一次声明多个变量,输出多个变量
$a=$b=$c=123;
var_dump($a,$b,$c);

test.php

<?php

$var1 = 256;
$var2 = -256;
$var3 = 0256;//八进制表示方式为前加0
$var4 = 0x256;//十六进制表示方式为前加0x

echo '正整数:';
echo $var1;
echo '<br/>';
echo '负整数:';
echo $var2;
echo '<br/>';
echo '八进制数:';
echo $var3;
echo '<br/>';
echo '十六进制数:';
echo $var4;

2.浮点型(float|double|real)

带小数点,科学计数法的写法,e或者E。

注意:浮点数是有误差,不要比较两个浮点数的大小

float.php

<?php

//浮点型的例子

$float = 12.3;

var_dump($float);//float 12.3

$float = -23.4;

var_dump($float);//float -23.4

//科学计数法的写法

$float = 2e3;//2乘以10的3次方

var_dump($float);//float 2000

$float = 2E-2;//2乘以10的-2次方

var_dump($float);//0.02

3. 布尔型(bool|boolean)

要么是真,要么是假,true|TRUE:真。false|FALSE:假。

bool.php

<?php

//告诉浏览器以什么编码方式解析什么类型的文档,防止中文乱码
header('content-type:text/html;charset=utf-8');

//布尔的例子

$bool = true;

var_dump($bool);//bool true

$bool = TRUE;

var_dump($bool);//bool true

$var1 = false;

$var2 = FALSE;

var_dump($var1,$var2);//bool false bool false

//if语句
$dream = true;
if($dream){
    echo '买路虎';
}else{
    echo 'code';
}

test.php

<?php

//任务:
//光在水中的速度为:225000000m/s
//光在玻璃中的速度为:200000000m/s
//光在空气中的速度为:300000000m/s

$var1 = 2.25e8;
$var2 = 2e8;
$var3 = 3E8;
echo '光在水中的速度为:'.$var1.'m/s'.'<br/>';
echo '光在玻璃中的速度为:'.$var2.'m/s'.'<br/>';
echo '光在空气中的速度为:'.$var3.'m/s';

4.字符串型(string)

定界符

单引号
双引号
    单引号和双引号的区别:单引号不解析变量,双引号解析变量,单引号只解析\'和\\
heredoc
  写法1:
    <<<名称
    代码段;
    名称;
  写法2:
    <<<"名称"
    代码段;
    名称;
  注意:在结束名称之前不能有任何输出,heredoc相当于双引号
nowdoc
  <<<'名称'
  代码段;
  名称;
  注意:nowdoc相当于单引号的作用

转义符

\n换行
\r回车
\t水平制表符
以上三个为源代码中有效果,页面上只显示一个空格

\\ -> \
\$ -> $
\' -> '
\" -> "

花括号{}

a.可以将PHP中的变量括成一个整体来解析
    {$变量名称}
    ${变量名称}
b.可以对字符串中的指定字符做增删改查的操作
    字符串的下标从0开始
    根据下标找到对应的字符做操作

string.php

<?php
header('content-type:text/html;charset=utf-8');
//字符串的例子

$username = 'king';

$email = '183812@qq.com';

$string = '';

var_dump($string);//string(0) ""
echo '<br />';
var_dump($username);//string(4) "king"

echo '<br />';

echo 'this is a test <br/>';
echo "hello world";
echo '<br />';

//echo '','',$username;
//单引号不解析变量,双引号解析变量
echo $username,'<br />';//king

echo '$username';//$username

echo '<br />';

echo "$username".'<br />';//king

//如何内容和定界符有冲突,需要转移字符进行解决
//任务:输出的效果为 He Said "I'm Fine"

$str1 = 'He Said "I\'m Fine" <br />';

$str2 = "He Said \"I'm Fine\"";

echo $str1,$str2;

echo '<hr />';

//单引号只解析\'和\\两个转移符号

$str = '!\r@\n#\t%a\\b\'c\$de';
$str = "!\r@\n#\t%a\\b\"c\$de";
echo $str;

echo '<hr />';

//任务:输出的效果为$var=123;
$var = 123;

echo "\$var的值为$var";

echo '<br/>';

echo '$var的值为'.$var;
echo '<br/>';

//任务:输出的效果为名称king是我
//php引擎在解析变量的时候,将会尽可能的向后取合法字符,认为取的越多,变量含义越明确
$username = 'king';
echo "名称{$username}是我<br/>";
echo "名称${username}是我";

string2.php

<?php

//对于字符串中的指定字符做增删改查操作

$string = 'abcdefg';

//查找
echo $string{0};//a
echo '<br />';
echo $string{2};//c
echo '<br />';
echo $string{5};//f
echo '<br />';

//修改,只能一个字符替换一个字符
$string{1} = 'z';
echo $string; //azcdefg
$string{4} = '!';
echo '<br/>';
echo $string; //azcd!fg

echo '<br/>';
$string = 'abc';
$string{0} = 'hello';
echo $string;//hbc
echo '<br/>';
//不要对中文字符做操作
$string = '你好';
var_dump($string);//string(6) "你好"(6个字符)
echo '<hr/>';

//删除
//$string = 'abcdefg';
//$string{2} = '';
//echo $string;//abdefg

echo '<br/>';
//$string{0} = '';
//echo $string;//bdef
//echo '<br/>';

//添加字符
$string = 'abc';
$string{3}='d';
echo $string;//abcd

echo '<br/>';
$string{5}='e';
echo $string;//abc e

/*
 * $string='king';
 *
 * 1.输出首字母
 * 2.将字符串中n编程o
 * 3.将字符串中i删除掉
 * 4.在字符串末尾添加一个!
 * */
echo '<br/>';
$string = 'king';
echo $string{0};
echo '<br/>';
$string{2} = 'o';
echo $string;
echo '<br/>';
//$string{1} = '';
//echo $string;
echo '<br/>';
$string{4} = '!';
echo $string;

test.php

<?php

//任务:输出效果为now
$string = 'Know';

echo $string{1}.$string{2}.$string{3};
echo '<br/>';

//任务:输出效果为
//principal-->princilel
//mortal-->mertal-->mertal
//later-->latest-->latest

$str1 = 'principal';
$str2 = 'mortal';
$str3 = 'later';

echo $str1,'-->';
$str1{6} = 'l';
$str1{7} = 'e';
echo $str1;

echo '<br/>';
echo $str2,'-->';
$str2{1} = 'e';
echo $str2,'-->';
$str{2} = 'd';
echo $str2;

echo '<br/>';
echo $str3,'-->';
$str3{4} = 's';
$str3{5} = 't';
echo $str3,'-->',$str3;

heredoc.php

<?php
$id = '2';
$username = 'queen';
$email = "1232@qq.com";
$str = "<table border='1' width='80%' bgcolor='pink'>
<tr>
<td>编号</td>
<td>用户名</td>
<td>邮箱</td>
</tr>
<tr>
<td>1</td>
<td>king</td>
<td>183811629@qq.com</td>
</tr>
<tr>
<td>{$id}</td>
<td>{$username}</td>
<td>{$email}</td>
</tr>
</table>";

//echo $str;
//通过heredoc写法
$str=<<<EOF
    this is test
    <h1>hello world</h1>
EOF;
//echo $str;

$str=<<<TABLE
<table border='1' width='80%' bgcolor='gold'>
<tr>
<td>编号</td>
<td>用户名</td>
<td>邮箱</td>
</tr>
<tr>
<td>1</td>
<td>king</td>
<td>183811629@qq.com</td>
</tr>
<tr>
<td>{$id}</td>
<td>{$username}</td>
<td>{$email}</td>
</tr>
</table>
TABLE;
echo $str;
echo '<hr/>';

//heredoc另一种写法

$str=<<<"TEST"
    <h1>this is show time</h1>
TEST;

echo $str;

echo '<hr/>';

//测试nowdoc
$str=<<<'EOD'
    <h1>this is a test</h1>
    <p>用户名:{$username}</p>
EOD;
//没有解析$username变量

test.php

//任务
定界符使用heredoc
要求输出效果图为七彩9块正方形
<?php

$str=<<<"EOF"
<table width="300px" border="0px" height="300px">
<tr width="100px" height="100px">
    <td bgcolor="#ff1493"></td>
    <td bgcolor="#ff1493"></td>
    <td bgcolor="aqua"></td>
</tr>    
<tr width="100px" height="100px">
    <td bgcolor="#ff7f50"></td>
    <td bgcolor="#f0f8ff"></td>
    <td bgcolor="aqua"></td>
</tr>    
<tr width="100px" height="100px">
    <td bgcolor="#ff7f50"></td>
    <td bgcolor="#dc143c"></td>
    <td bgcolor="#dc143c"></td>
</tr>    
</table>
EOF;
echo $str;

复合类型

1.数组(Array)

2.对象(Object)

特殊类型

1.资源(Resource)

2.空(null|NULL)

变量未声明直接使用,它的值就是null
声明一个变量并且赋值为null
经过unset()注销过的变量值为null

compoundType.php

<?php

//设置错误级别,E_ALL但是除了 NOTICE
//error_reporting(E_All&~E_NOTICE);

//测试复合类型
//声明一个数组
$arr = array();
var_dump($arr);
echo '<hr/>';
$arr = array(12,'king',true,123.45);
var_dump($arr);
echo '<hr/>';

//对象
$obj = new Stdclass();
var_dump($obj);//object(stdClass)#1 (0) { }
echo '<hr/>';

//特殊类型
$handle = fopen('./test5.php','r');
var_dump($handle);//resource(3) of type (stream)
echo '<hr/>';


//测试空

//未声明的变量直接使用
var_dump($asfsd);
echo '<br />';

//声明一个变量赋值为null
$var = null;
var_dump($var);
echo '<br />';

//通过unset销毁变量
$var = 123;
var_dump($var);
echo '<br />';
unset($var);
var_dump($var);
echo '<br />';

//一次销毁3个变量
$a=$b=$c='king';
var_dump($a,$b,$c);
echo '<br />';
unset($a,$b,$c);
var_dump($a,$b,$c);

5种伪类型

1.number
2.mixed
3.callback
4.void
5. …

赞(0)

评论 抢沙发

评论前必须登录!

 

LNMP社群 不仅仅是技术

关于我们网站地图