php类型

程序员入门之PHP语法基础知识

PHP的语法结构:

1,标准风格,也叫XML格式,<?php ?>

//告诉浏览器以什么编码方式来解析什么类型的文档(可以解决乱码问题)

header("content-Type:text/html;charset=utf-8");写在任何输出之前

2,短风格,也叫asp_tags //<? 代码 ?>

3,ASP风格,<% 代码 %>

4,长风格,<script language=”php”>代码</script>

PHP文件内可以写HTML类型的代码,HTML内不能写PHP类型的代码

PHP内的注释:1,单行注释 // 或者 #

2, 多行注释 /* */

3, 添加缩进 tab 取消缩进 shift+tab

4, 删除当前行 ctrl+d 撤销 ctrl+z

变量:可以变化的量,变量的声明 以$符号开始,后面跟上变量的名称,

//不要起特殊符号,包含中文等

$a $bc $username

可以多个变量一起赋值 $e=$f=$g=200

echo “<br/>”换行

echo “a”,”b”,”username”; //输出一个或多个字符串

echo a,b,username;

echo ‘king’; //输出King

命名变量需要遵循驼峰标记法:

常量:定义常量 define(常量的名称,常量的值) //直接使用不用加$ echo INT;

魔术常量:_LINE_:说明文件中的当前行号 _FILE_:说明文件的完整路径,名字

_CLASS_:类的名称 _METHOD_:类的方法名称 _FUNCTION_:函数名称

eg:echo _LINE_ ; // 获取当前行号,使用与普通常量无区别

基本数据类型:

1)标量类型:只能含有单一信息包括(boolean,string,float,integer);

gettype($int)----得到$int这个变量的类型

声明一个浮点类型的变量 $float_1 =1.2;

声明一个浮点类型的变量 $true_1 =false;

字符串:字符串必须写在定界符之间。定界符有’’,””,<<<

单引号和双引号的区别:

双引号可以解析变量,单引号不行,单引号解析\’和\\,双引号可以解析全 部转义符。

换行符:PHP_EOL //echo “ABC”,PHP_EOL,“dfg”;

{ }的作用,PHP引擎在解析变量的时候会尽可能多的合法字符,它认为取得到的合法字符越多,这个变量的含义月明确,{username}是一个整体

$username =”www”; echo “{$username}123”; //www123

echo “${username}123”这样写也行。

$string = “asdasa”; echo $string{2};//取出string的第三个字符。

var_dump($int); //打印变量的详细信息,不用echo

echo “<h1>this is ss</h1>”; //this is ss 。 html语句会被Apache解析

echo语句会被php引擎解析掉返回给服务器后HTML语句会被服务器解析

>: &gt < :&lt ‘ :&#39 “ :&quot & :&amp 空格:&nbsp

$test=”asdfg”;

$string{3}=”f”; //将test中第四个字符换成f

$test{5}=”s”; //在末尾加s //asdfgs

HereDoc:在写大量文本的时候

<<< 名称

写的内容

名称; //在结束名称前不能有任何字符(包括空格也不能有)

<?php

$tb=”我是内容”;

$table=<<<psd

//下面的内容可以按HTML的格式来书写

<table border="1" width="700" bgcolor="#ABCDEF">

<tr>

<td>{$tb}</td> //可以将tb直接写入 eg:echo “{$username}123”;

<td>e</td>

<td>r</td>

</tr>

</table>

psd; //前面不能有任何字符

echo $table;

?>

2)复合类型:

数组(array):

$arr=array(1,2,3,4,5); echo gettype($arr)

对象(object):

$object=new stdClass(); echo gettype($object)

3)特殊类型:

资源(resource): $filename = “text.txt”;

$handle =fopne($filename,”r”);

展开
收起

php变量是什么?php变量的数据类型、命名规则等详细介绍

大家好,欢迎关注支持,谢谢!本篇将介绍“php变量是什么?php变量的数据类型、命名规则以及php变量的使用教程”,有兴趣的朋友可以了解一下!

一、前言

php是一门开源的脚本语言,它的语法简单实用,利于学习,被广泛的使用于Web开发领域。目前很多中小型网站都是使用php语言开发的,如果我们能学好php语言,也是很有前途的。

今天小编为什么要介绍php变量?php变量虽然很简单,大家都会使用,但是很多人并没有真正的了解php变量。今天小编讲php变量专题,就是希望能帮助大家更彻底的了解php变量,在使用中更得心应手。

下边对php变量的介绍来源于小编的理解和学习笔记整理所得,如有不对的地方,望批评指出,谢谢!

二、php变量

1、什么是php变量?

“php变量”字面上的意思就是可以发生改变的量,它其实是存储数据的一种方式,这种方式就是在内存中申请一段内存空间并命名,这段命名的空间就可以称为一个变量(存储数据的容器)。

php变量和数学中的未知数类似,在数学中,我们经常使用x、y、z等字母来表示未知数。比如:x+y=5,当x=2时,可以求出y=3。在php中,类似x和y这样的字母被称为变量。

2、php变量的数据类型

php变量有八种数据类型,四种标量类型、两种复合类型和两种特殊类型。

标量类型:int(整数型)、float(浮点型)、boolean(布尔类型)、string(字符串类型)复合类型:array(数组)、object(对象)特殊类型:null(空)、resource(资源)由于php是一门弱语言,定义变量并不需要声明变量类型,所以它的八种数据类型我们只需要了解一下即可,并不需要记忆。

3、php变量的命名规则

php变量名不能乱起,必须遵循php变量的命名规则,具体如下:

a、必须以美元符号($)开头,如:$a,$b;b、美元符号($)后的第一个字母只能是下划线“_”或字母,不能是数字(比如:$3a是不合法的);c、美元符号($)后的部分只能由字母、下滑线(_)和数字组成;说明:

php变量名是区分大小写的,比如:$name和$Name是两个不同的变量;php变量的命名一般见名知意,使用英文单词来命名。如果是由多个单词组成,除第一个单词外的单词首字母大写。

4、php变量的声明

php变量的声明非常简单,由于php是弱语言,在声明变量的时候不需要指定变量类型。而其php变量不需要声明就可以使用,在使用的时候自动声明。如下所示:

计算变量$number1和变量$number2的和

<?php

$number1 = 3;

$number2 = 2;

$number3 = $number1+$number2;

echo $number3;

?>

5、php变量的作用域

php变量有四种不同的作用域:local(局部)、global(全局)、static(静态)、parameter(参数)。

local(局部变量作用域)

局部变量一般是指在函数中声明的变量,该变量只能在该函数中访问。如下所示:

<?php

function fun(){

$x = 4;//声明局部变量并赋值

echo $x;//访问局部变量

}

fun();//调用函数

echo $x;//这里不能访问局部变量$x,会报错

?>

输出结果:4 报错(x未定义)

global(全局变量作用域)

全局变量是在所有函数外部声明的变量,可以在声明变量后的任何地方访问,注意的是在函数中访问需要在前面添加global关键字。如下所示:

<?php

$number = 3;

function fun(){

global $number;//函数中访问全局变量前需要使用global关键字

echo $number;//访问全局变量

}

fun();//调用函数

echo $number;//访问全局变量

?>

输出结果:33

static(静态作用域)

在第一次调用函数并运行完后,通常该函数的所有局部变量都会被销毁,如果想保留一个变量不被删除,我们可以在该变量第一次使用的时候添加static关键字。在第二次调用该函数时,添加static关键字的变量还存在。如下所示:

<?php

function fun(){

static $number = 3;

echo $number;//访问静态变量

$number++;//静态变量加1

}

fun();//第一次调用函数

fun();//第二次调用函数

fun();//第三次调用函数

?>

输出结果:34

parameter(参数作用域)

参数是通过调用代码将值传递给函数的局部变量,如下所示:

<?php

function fun($number){

echo $number;//访问全局变量

}

fun(6);//将参数6传给函数局部变量$number

?>

输出结果:6

好了,关于“php变量是什么?php变量的数据类型、命名规则等详细介绍”就到此结束了,希望能帮助大家!

展开
收起

PHP丨PHP基础知识之数据类型之间相互转换

昨天刚讲完PHP基础知识数据类型,今天就来讲讲PHP数据类型的转换。

转换变量或者值的类型,转换成其他数据类型的方法主要分为两大类:自动转换和强制转换。

(int)、(integer):转换成整形

(float)、(double)、(real):转换成浮点型

(string):转换成字符串

(bool)、(boolean):转换成布尔类型

(array):转换成数组

(object):转换成对象

一、自动转换类型:

自动类型转换就是编译器默默地、隐式地、偷偷地进行的数据类型转换,这种转换不需要程序员干预,会自动发生。

自动转换,通常发生在不同数据类型的变量进行混合运算时。一般只有四种标量类型int、float、string、bool才会进行自动转换。

注:

字符串、数字参与运算,字符串先转换成数字;

转换后的数字从字符串开始的数值开始,不带小数点则为int,否则为false;

字符串"abcsd"直接转换成0;

整型转化为浮点型,由于浮点型的精度范围大于整型,所以转化后的精度不会改变;

浮点型转化为整型,将自动舍弃小数点部分,只保留整数部分;

如果一个浮点数超过整形数字的有效范围,其结果是不确定的。;

当字符串转化为数字时,转化后的数字是从字符串开始部分的数值型字符串,数值型字符串包括用科学计算法表示的数字。

NULL转为字符串,为空字符

二、强制类型转换:

自动类型转换是编译器根据代码的上下文环境自行判断的结果,有时候并不是那么“智能”,不能满足所有的需求;

如果需要,程序员也可以自己在代码中明确地提出要进行类型转换,这称为强制类型转换。

PHP数据类型强制转换有三种方式:

1、在转换的变量前加上目标类型:包括(int)整型、(bool)布尔型、(float)浮点型、(string)字符串、(array)数组、(object)对象;

2、使用内置转换函数intval()、floatval()、strval()、boolval()

以上两种方法均没有改变被转换变量本身的类型,而是转换得到新的类型数据值给变量,原始变量的类型和值不变。

3、setType() 会将变量本身类型改变成其他类型。

数据类型转换的注意事项:

类型转换中浮点型转换成整型,会舍弃小数部分,只保留整数。

字符串转换为数字时,转换后的数字是从字符串开始部分的数值型字符部分转换的。

自动类型转换 VS 强制类型转换

可以自动转换的类型一定能够强制转换,但是,需要强制转换的类型不一定能够自动转换;

现在我们学到的数据类型,既可以自动转换,又可以强制转换,以后我们还会学到一些只能强制转换而不能自动转换的类型。

可以自动进行的类型转换一般风险较低,不会对程序带来严重的后果;

只能强制进行的类型转换一般风险较高,或者行为匪夷所思;

就是很奇怪的一种转换,这会导致取得的值也很奇怪;

就是风险极高的一种转换,一般会导致程序崩溃。

使用强制类型转换时,程序员自己要意识到潜在的风险。

文章收集与网络,辛苦收集转载请备注出处一只大脸猫博客!

好了今天就分享到这里,拜拜我是你们的大朋友计算机爱好者大脸猫。

今日推荐:

PHP丨PHP基础知识之数据类型

程序员日常小漫画

PHP丨PHP基础入门——函数「理论篇」

下期预告(变量类型测试函数的使用方法)

is_bool():判定是否为bool

is_int();判定是否为整型

is_float():判定是否为浮点型

is_string():判定是否为字符串

is_array();判定是否为数组

is_object():判定是否为对象

is_resource():判定是否为资源

is_null():判断是否为空

is_scalar():判断是否为标量

is_numeric():判断是否为数字或数字字符串

is_callable():判断是否为有效函数名

今日提问:【怎么看待PHP不声明数据类型?】

#php#

展开
收起

PHP面试:变量类型题型

PHP数据类型有哪些?答:php支持8种原始数据类型,分别是:1)标量类型 - 布尔、整型、浮点型、字符串行2)复合类型 - 数组、对象3)特殊类型 - 资源类型、NULL类型另外,还有三种伪类型:混合类型、数字类型、回调类型is_numeric("10")+"aaa"的结果是?1(php5.x版本)不能执行(php7.x版本)is_numeric("10")+"aaa"的结果是?不能执行(php7.x)如何判定一个变量是数字类型,不包括数字字符串类型?is_int(var) || is_float(var)写出下面的运算结果0 == null 1“0”==null false0 == “0” 1“abc" == 0 1"abc" == true 1true==0 falsetrue=="0" false写出下面的运算结果$a=0;isset($a)的结果是: 1$a=null;isset($a)的结果是: false$a=false;isset($a)的结果是: 1$a="";isset($a)的结果是:1写出下面的运算结果$a=0;empty($a)的结果是: 1$a=“0”;empty($a)的结果是: 1$a=null;empty($a)的结果是: 1$a=false;empty($a)的结果是: 1$a="";empty($a)的结果是:1

展开
收起

php学习之php变量及变量的八种数据类型

1.什么是变量

说明:在php中存储数据的一种方式,就是i可以发生改变的量,这种方式是在内存中开辟一个可以存放数据的空间,给这个空间起个名称,这时候的空间就可以称为一个变量。在运行过程中这个值是可以发生改变的

当前空间的名称就是变量名,当前空间的数据(八种数据类型)就称为变量值

2.定义变量并赋值

定义变量:$变量名; 注意这样定义的变量是可以的 ,但是不能使用,直接输出会报错,必须后面跟一个变量值才可以使用

notice:注意undefined:未定义variable:变量

定义变量并赋值:$变量名 = 变量值;

<?php// $a;// echo $a;$a =1;echo $a;?>

3.定义变量的规则

变量名是区分大小写的

<?php//定义两个变量a、A这是两个不同的变量 最后打印出来的是两个不同的值$a =1;$A =2;echo $a,$A;?>

变量名建议使用有意义的名称,看到变量名就知道是代表啥意思,比如$name、$age、$sex、$get_user_name命名规则:必须是数字、字母、下划线组成且不能以数字开头。比如:$a1、$A1、$a_1、$_a1、$_2都可以但是不能是$1a。

命名的三种规则方式:

驼峰式命名法:第一个单子首字母小写,其他大写。比如$getUserName下划线命名法:每个单词用下划线隔开。比如$get_user_name帕斯卡命名法:每一个单词首字母都大写。比如:$GetUserName

变量常用的几个函数:

echo:打印输出变量的值var_dump():打印变量的类型、长度、值

isset():判断变量是否存在,如果变量存在且不是null则返回true,否则返回的时false

unset():销毁变量

4.变量的八种数据类型

标量类型:int(整数型)、float(浮点型)、boolean(布尔类型)、string(字符串类型)复合类型:array(数组)、object(对象)特殊类型:null(空)、resource(资源)

4.1.int:整数型

整数型包括正整数和负整数和0,在定义变量赋值的时候直接写数字就可以了

<?php$num1 =1;$num2 =0;$num3 =-1;$num4 =-0;var_dump($num1,$num2,$num3,$num4);//都可以打印且都是整数类型?>

4.2 float:浮点型

说明:包括小数,负小数,正小数和0.0

<?php$num_float1 =0.0;$num_float2 =-0.0;$num_float3 =-1.0;$num_float4 =1.0;var_dump($num_float1,$num_float2,$num_float3,$num_float4);?>

4.3 string:字符串型

说明:只要是任何类型的数据加上单引号或双引号就是字符串类型,

string类型有四种方式:

单引号。如:$a=’吾爱乐享’;双引号。如:$a=”吾爱乐享”;heredoc:双引号的多行写法nowdoc:单引号的多行写法

单引号和双引号的区别:

单引号不能解析变量,双引号可以解析变量

heredoc:双引号的多行方式,也可以解析变量

语法:定界符是自定义的大写$str = <<<定界符 //定界符后面不能有任何字符包括空格大量的字符串定界符; //定界符前面不能出现任何字符和空格,必须是顶头,不能有返回的字符

<?php$str1 ="吾爱乐享";$str=<<<ABC<ul><li>吾爱乐享</li><li>$str1</li><li>学习</li></ul>ABC;echo $str;?>

nowdoc:单引号方式,不能解析变量

语法:$str=<<<‘定界符’字符串定界符;

<?php $str1 ="吾爱乐享"; $str=<<<'ABC'<ul><li>吾爱乐享</li><li>$str1</li> <li>学习</li></ul> ABC; echo $str;?>

4.4 boolean:布尔型

说明:布尔型只有两个值,true和false,布尔值是和一些其他方式配合使用的比如流程控制

其他类型转换为boolean类型时,以下值被认为是false

布尔值false本身整型值为0浮点型值为0.0空字符串,以及字符串“0”不包括任何元素的数组不包括任何成员变量的对象(仅php4适用)特殊类型null(包括尚未赋值的变量)从空标记生成的simplexml对象

所有其他值都被认为是true(包括任何资源)

4.5 array 数组

说明:数组是能够在单个变量中存储多个值的特殊变量

案例:

<?php$cars=array("吾爱乐享","php","学习资源");echo $cars[0],$cars[1],$cars[2];?>

4.6 object 对象

4.7 空类型

说明:没有任何值的一个给变量定义赋值方式

一般变量被认为是null的情况:

被赋值为null尚未赋值被unset():被销毁的变量

4.8 resource资源

说明:它不是一种具体的值,而是一个多种数据的统称

多种数据:上传文件、加载图片、路径、数据库等这些都称为外部资源,不是php本身可以定义的数据

展开
收起

PHP丨PHP基础知识之数据类型

PHP的数据类型主要有三大种:(细分的话8小种)

一、标量数据类型

标量数据类型包括以下几种:

(1)BOOLEAN:布尔型

布尔变量是PHP变量中最简单的;

它保存一个TRUE或者FALSE值;

其中TRUE或者FALSE是PHP的内部关键字;

设定一个布尔型的变量,只需将TRUE或者FALSE赋值给该变量;

程序的世界只有对错(世界上有01种人,一种是会点赞的人,一种是看了不点赞的人)

其他类型转换成布尔类型,var_dump((boolean)其他类型);

以下这些情况为FALSE,其他为TRUE

布尔值(值为false)、整型值(值为0零)、浮点型值(值为0.0)、字符串(空字符串和字符串“0”)、数组(没有诚意的数组)、特殊类型NULL

(2)STEING:字符串

字符串是连续的字符序列,字符串中的每个字符只占用一个字节。在PHP中,定义字符串有3种方式:

单引号方式,双引号方式,定界符方式。(字符串中有一些特殊的字符串例如:“\n” 代表着换行;“\r” 代表着回车)

(3)INTEGER:整数

整数数据类型只能包含整数。这些数据类型可以是正数或负数。在32位的操作系统中,有效的范围是 -2147483648~+2147483647。如果超出则变成 浮点数

(4)DOUBLE:浮点数(双精度或实数)(DOUBLE或FLOAT)

浮点数据类型可以用来存储数字,也可以保存小数。它提供的精度不整数大得多。在32位的操作系统中,有效的范围是1.7E-308~1.7E+308。

浮点数在计算中会出现精度消耗(因此不要用浮点数进行累加)比如:在计算金额的时候普遍会使用1代表0.01元

二、复合数据类型:

复合数据类型包括以下两种。

(1)ARRAY:数组(数组呢主要分为关联是数组和索引式数组)

可以是二维、三维或者多维,数组中的各元素可以是string、integer或double,也可以是array。

(2)OBJECT:对象类型

三、特殊数据类型:

特殊数据类型包括以下两种。

(1)RESOURCE:资源

资源是PHP内的几个函数所需要的特殊数据类型,由编程人员来分配。

(2)NULL:空值

空值是最简单的数据类型。表示没有为该变量设置任何值,另外,空值(NULL)不区分大小写。

在下列情况下一个变量被认为是NULL

1、被赋值为NULL值的变量;

2、尚未被赋值的变量;

3、被unset函数销毁的变量

对象和资源属于“引用类型”,其他都属于“值类型”

之前还接触过一种「伪类型」,但是目前还是没有了解到伪类型属不属于数值类型。

伪类型介绍

伪类型分为三小类:

1、(mixed)混合类型 :一个参数可以接受多种不同的类型;

2、(number)数值类型:一个参数可以是 integer或者float

3、(callback)回调类型:可以接受用户自定义的回调函数作为参数,回调函数不止可以时简单的函数还可以是对象方法还包括静态方法;

好了今天就分享到这里,拜拜我是你们的大朋友计算机爱好者大脸猫。

今日问题:【伪类型属不属于数据类型?】

今日推荐:

程序员日常小漫画

PHP丨PHP基础入门——函数「理论篇」

你以为的PHP程序员,实际上的PHP程序员!

展开
收起

详解 PHP 7.4 的类型属性

PHP 7.4 中增加了类型化类属性,对 php 的类型系统进行了重大改进。这些更改完全是自愿加入的,不会破坏以前的版本。

在本文中,我们将深入了解该功能,但首先让我们总结一下最重要的几点:

这些更改自 PHP 7.4 起可用,计划于 2019 年 11 月发布它们仅在类中可用,并且需要访问修饰符:public、protected 或 private;或 var允许所有类型,但 void 和 callable 除外他们的实际情况是这样的:

classFoo{public int $a;public?string $b='foo';private Foo $prop;protectedstatic string $static='default';}如果你不确定类型的额外好处,我建议您首先阅读这篇文章。

未初始化

在进入正题之前,首先要探讨一个与类型属性有关的重要方面。

不管你第一眼看到这段代码是怎么想的,但它的确是合法的

classFoo{public int $bar;}$foo=newFoo;即便是类的实例化后 $bar 值仍不是整数值的情况下,PHP 也只是会在访问 $bar 时才会报错:

var_dump($foo->bar);Fatal error: Uncaught Error: Typed property Foo::$barmust not be accessed before initialization从错误消息中可以看出,出现了一种新的变量状态:未初始化 (uninitialized)

$bar 属性无论是否声明了类型,值都可以为 null。因此,无法确定类型属性是否设置。这就是增加变量「未初始化」状态的原因。

未初始化有四个方面需要注意:

无法读取未初始化的属性,一旦这么做,将引发致命错误;由于在访问属性时会检查未初始化状态,所以即使是不可为空的对象也可以使用未初始化属性;在读取未初始化属性时候之前可以对其进行写入;unset 操作会让类型属性变成未初始化状态,而非类型属性只会变成值为 null;特别要注意在对象实例化之后设置未初始化的类型属性是合法的:

classFoo{public int $a;}$foo=newFoo;$foo->a=1;// 合法$foo->a=null;// 非法虽然只会在读取属性值时检查未初始化状态,但在写入属性时会进行类型验证。这意味着任何无效的属性值都不会被设置。

默认值和构造函数

让我们仔细看看如何初始化类型属性值。对于标量类型,可以直接提供一个默认值

classFoo{public int $bar=4;public?string $baz=null;// 错误写法 public string $baz = null;publicarray$list=[1,2,3];}类型属性不能显示设置为 null,除非是可空类型。这看上去显而易见的,但是一些旧行为却允许这种操作

functionpassNull(int $i=null){/* … */}passNull(null);幸运的是,类型属性不允许这种令人疑惑的行为。还要注意,属性类型的默认值不可能为对象或者类,你应当使用构造器来设置这些值。

最明显的用来设置默认值的地方就是构造函数

classFoo{private int $a;publicfunction__construct(int $a){$this->a=$a;}}但也要记住我之前提到的内容:在构造函数之外写入未初始化 (uninitialized) 的属性是有效的。只要没有读取属性值的操作,编译器就不会执行未初始化的相关检查。

类型

那么到底哪些类型可以指定,又如何指定呢?我已经提到了指定属性类型只能在类中进行 (当前如此),并且它们需要一个访问修饰符或是属性前面的 var 关键字。

对于可用类型,几乎所有类型都可以使用,除了 void 和 callable 类型.

因为 void 意味着没有值,所以它不能用于指定一个值的类型也就说得过去了。然而 callback 就有一点细微不同了。

可见,PHP 中的 "callback" 可以这样写

$callable=[$this,'method'];假设你有以下 (无效) 代码:

classFoo{publiccallable$callable;publicfunction__construct(callable$callable){/* … */}}classBar{public Foo $foo;publicfunction__construct(){$this->foo=newFoo([$this,'method'])}privatefunctionmethod(){/* … */}}$bar=newBar;($bar->foo->callable)();在此例中,$callback 引用了私有的 Bar::method,但是是在 Foo 的上下文中被调用的。基于这个问题,决定不添加 callback 类型的支持。

不过这并不是什么大问题,因为 Closure(闭包) 是一种有效类型,它会记住构建它的 $this 上下文。

顺带一说,以下是所有可用类型的列表:

boolintfloatstringarrayiterableobject? (nullable)self & parentClasses & interfaces强制和严格类型

PHP,是我们既喜欢又反感的动态语言,它会尽可能地强制或转换类型。假设你在一个期望接受 int 的地方传入字符串,PHP 会试着自动转换该字符串:

functioncoerce(int $i){/* … */}coerce('1');// 1同样的原则也适用于已指定类型的属性,下面的代码是有效的,且会将'1' 转换为 1.

classBar{public int $i;}$bar=newBar;$bar->i='1';// 1如果你并不喜欢这种 (自动转换) 行为,可以通过声明严格类型来禁用它:

declare(strict_types=1);$bar=newBar;$bar->i='1';// 1Fatal error: Uncaught TypeError:Typed property Bar::$i must be int, string used类型差异和继承

即使 PHP 7.4 引入了 改进的类型差异 , 但是类型的属性仍然是不变的。这意味着以下写法是无效的:

classA{}classBextendsA{}classFoo{publicA$prop;}classBarextendsFoo{publicB$prop;}Fatal error: Type of Bar::$prop must be A(as in classFoo)如果上面的示例看起来不够明显的话,你可以查看以下内容:

classFoo{public self $prop;}classBarextendsFoo{public self $prop;}在运行代码之前,PHP 将在背后用它所引用的具体实现类来替换 self。这意味着在此本例中将抛出相同的错误。解决此问题的唯一方法是执行以下操作:

classFoo{public Foo $prop;}classBarextendsFoo{public Foo $prop;}谈到继承,您可能会发现很难想出任何好的用例来重写继承属性的类型。

尽管我同意这种观点,但值得注意的是更改继承属性的类型是可能实现的,前提是访问修饰符也必须从 private 更改为 protected 或 public。

以下代码是有效的:

classFoo{private int $prop;}classBarextendsFoo{public string $prop;}但是,从可空的类型改为不可空或反向的类型是不允许的。

classFoo{public int $a;public?int $b;}classBarextendsFoo{public?int $a;public int $b;}Fatal error: Type of Bar::$a must be int (as in classFoo)还有更多!

正如开头所说,类型化属性是 PHP 的 主要 补充。关于它们更多的内容,我建议您通读 RFC 以了解所有细节。

如果您不熟悉 PHP 7.4,则可能需要阅读 完整列表 中所做的更改和添加的功能。老实说,这是很长一段时间以来最好的发行版之一,值得您花时间!

展开
收起

php学习之php的八种数据类型的使用

字符串类型:string

php学习之php的八种数据类型之字符串string的使用

1.整数型:int

说明:是负数、0、正数的集合、在php中存储整数为10进制、八进制、十六进制

语法:$var=整数数字;

八进制的写法:在数字前面加上0,就是八进制。数字的范围有0-7。算法:出去开头0,各位+十位*8 +百为*8*8+千位*8*8*8….$num=0456; //4*8*8+5*8+6=302十六进制的写法:在数字前面加上0x,数字为0-f算法:出去开头0,各位+十位*16 +百为*16*16+千位*16*16*16….$num =0x456;//4*16*16+5*16+6=1110 十进制的写法:直接写数字,数字范围0-9

php最大的存储数值为:21亿。用常量PHP_INIT_MAX查询,最大存储值为2147483647,超过这个值自动转为float型

php最大的位数为14位,一个数值占多个位置,PHP_INT_SIZE

2.浮点型:float

说明:就是小数,浮点型也叫浮点数、float、双精度数double或实数real

php中的小说有两种表现形式,

普通的小数科学计数法

浮点数的精度有限,尽管取决于系统,php通常使用ieee754双精度格式,则由于取整而导致的最大相对误差为1.11e-16。非基本数学运算可能会给出更大的误差,并且要考虑到进行复合运算时的误差传递

此外,以十进制能够精确表示的有理数如0.1或0.7,无论有多少为数都不能被内部所使用的二进制精确表示,因此不能在不丢失一点点精度的情况下转换为二进制的格式,这就会造成混乱的结果,如:floor((0.1+0.7)*10)通常会返回7而不是预期中的8,因为结果内部的表示其实是类似于7.9999999999999991118…

所以永远不要相信浮点数结果精确到了最后一位,也永远不要比较两个浮点数是否相等,如果确实需要更高的精度,应该使用任意精度数学函数或者gmp函数

普通小数形式

小数末尾多个,小数点后面超过最大长度,会自动删除超出部分,最末尾会四舍五入

科学计数形式

超过14位自动转为科学计数法

3.布尔类型:boolean

说明:在php中布尔型的数据只有两个值,true和false

布尔值一般都用于返回的结果用于流程控制语句中

4.数组:array

说明:一组数据的集合

$变量=array(元素1,元素2,元素3,……);

5.对象:object

说明:世间万物皆为对象

在php中的对象是由类创建来的

//class创建一个类,调用对象$name=null;$age=0;Class people{//属性var $name;var $age;//方法function run(){echo '跑步';}}//创建对象$zs=new people();$zs->name='张三';$zs->age=23;echo $zs->name;$zs->run();$ls= new people();

6.空:null

说明特殊的null值表示一个变量没有值,null类型唯一的值就是它本身null

在php中只能有定义变量并赋值的情况,没有只定义不赋值,这个时候就需要创建一个变量,不知道存储说明值,这个时候可以使用null来创建变量

用法:

7资源:resource

说明:就是引用php外部的内容,这个时候的类型就是资源,资源是通过专门的函数建立和使用的

8.手册中的类型:用于说明需要某种类型的数据

mixed:一个参数可以接收多种不同的类型,如果函数需要的形参是两种以上,都会使用mixednumber:可以是int和floatvoid:作为返回类型意味着函数的返回值是无用的,void作为参数列表意味着函数不接受任何参数

9数据类型的转换

说明:在php 中数据类型是可以进行互相转换的,如整型1转换成字符串’1′

在php中分两种转换形式,:自动转换和强制转换

自动转换

给到特定写法就会改变原来的类型

强制转换

可以使用一些特殊的方式来强制型的改变类型

允许的强制转换的有:

(int),(integer):转换为整型(bool),(boolean):转化为布尔类型(float),(double),(real):转换为浮点型(string):转换为字符串(array):转换为数组(object):转换为对象(unset):转换为null

<?php/*** @Author: admin* @Date: 2018-08-16 22:38:26* @Last Modified by: admin* @Last Modified time: 2018-08-17 04:29:11*/////定义一个十进制的整数的类型$num1 = 10;$num2 = 0;$num3 = -10;echo $num1."<br>".$num2."<br>".$num3;echo "<br>";//定义一个八进制的类型$num1 = 000;//0$num2 = 077774;//32764$num3 = 05555;//2925echo $num1."<br>".$num2."<br>".$num3;echo "<br>";//定义一个十六进制的类型$num1 = 0x00ff;//255$num2 = 0xfff;//4095$num3 = 0x00000;//0echo $num1."<br>".$num2."<br>".$num3;echo "<br>";//查询最大php存储数值echo PHP_INT_MAX;//最大存储值为2147483647,超过这个值自动转为float型//查询一个数字占多大位置$num = 1111111111111111;//超过14位后自动转为科学计数法var_dump($num);echo PHP_INT_SIZE;//4$num = 11111111111;//超过int的取值范围后自动转为float型var_dump($num);$num = 1111111111;//没超过int的取值范围是int型var_dump($num);//小数浮点型$num1=1.1;$num2=0.0;//小数末尾多个,小数点后面超过最大长度,会自动删除超出部分,最末尾会四舍五入$num3=1.00000000000000000000000000;var_dump($num3);$num3=9.99999999999999999999999999;var_dump($num3);$num3=5.55555555555555555555555555;var_dump($num3);$num3=4.44444444444444444444444444;var_dump($num3);//科学计数$num=1111111111111111.1;//超过14位自动转为科学计数法var_dump($num);$num=1111111111111.1;//没超过14位var_dump($num);//不精准体现$num=floor((0.1+0.7)*10);//floor强制转化成浮点型var_dump($num);//结果为7二不是8//bool类型$true=true;var_dump($true);//一般布尔类型会用在控制语句中if ($num==1) {echo '真';} else {echo '假';}echo "<hr>";//class创建一个类,调用对象$name=null;$age=0;Class people{//属性var $name;var $age;//方法function run(){echo '跑步';}}//创建对象$zs=new people();$zs->name='张三';$zs->age=23;echo $zs->name;$zs->run();//null类型$a=null;$b='';//空字符串if (empty($b)) {echo '空';} else {echo $b;}//给函数的形参加默认值function FunctionName($value='',$b=null){}FunctionName();//资源resource 连接数据库$link= @mysql_connect('127.0.0.1','root','root');var_dump($link);//自动转换$a=1;$b=2;$v=$a.$b;//转换为字符串var_dump($v);if ($a) {//自动转换为boolean类型echo '真';}//强制转换$num=1;var_dump((string)$num);//强制转换为字符串$str='123';var_dump((int)$str);//强制转换为整数

展开
收起

php数据类型理解

1.总体划分

· 标量类型: int, float, string, bool

· 复合类型: array, object

· 特殊类型: null, resource

2.整数类型

3种整数类型的写法(表示法):

· 十进制写法:123

· 八进制写法: 0123

· 十六进制写法: 0x123

3.进制转换

dec: 10进制

bin: 2进制

oct: 8进制

hex: 16进制

10进制转换为2进制: decbin(10进制数字),得到的结果是2进制数字字符串;

10进制转换为8进制: decoct(10进制数字),得到的结果是8进制数字字符串;

10进制转换为16进制: dechex(10进制数字),得到的结果是16进制数字字符串;

结果为:

2进制转换为10进制:bindec(2进制数字字符串),得到的结果是10进制数字;

8进制转换为10进制:octdec(8进制数字字符串),得到的结果是10进制数字;

16进制转换为10进制:hexdec(16进制数字字符串),得到的结果是10进制数字;

结果为:

展开
收起

PHP八种数据类型

在PHP程序中,数据类型可以分成3种:标量数据类型、复合数据类型(即将多个简单数据类型组合在一起,存储在一个变量名中)和特殊数据类型。1.标量数据类型标量数据类型包括以下几种。(1)boolean:布尔型 布尔变量是PHP变量中最简单的。它保存一个True或者False值。其中True或者False是PHP的内部关键字。设定一个布尔型的变量,只需将True或者False赋值给该变量(2)string:字符串 字符串是连续的字符序列,字符串中的每个字符只占用一个字节。在PHP中,定义字符串有3种方式:单引号方式,双引号方式,Heredoc方式。(3)integer:整数 整数数据类型只能包含整数。这些数据类型可以是正数或负数。在32位的操作系统中,有效的范围是2 147 483 648~+2147 483 647。(4)double:浮点数 浮点数据类型可以用来存储数字,也可以保存小数。它提供的精度不整数大得多。在32位的操作系统中,有效的范围是1.7E-308~1.7E+308。

2.复合数据类型复合数据类型包括以下两种。(1)array:数组可以是二维、三维或者多维,数组中的各元素可以是string、integer或double,也可以是array。(2)object:对象类型

3.特殊数据类型特殊数据类型包括以下两种。(1)resource:资源 资源是PHP内的几个函数所需要的特殊数据类型,由编程人员来分配。(2)null:空值 空值是最简单的数据类型。表示没有为该变量设置任何值,另外,空值(NULL)不区分大小写。

展开
收起