PHP类型转换&&类型强制转换
获取数据类型 : 如果想查看某个表达式的值和类型,用 var_dump()。 如果只是想得到一个易读懂的类型的表达方式用于调试,用 gettype()。 要查看某个类型,不要用 gettype(),而用 is_type() 函数。 ■字符串转换为数值 当一个字符串被当作数字来求值时,根据
获取数据类型 :
如果想查看某个表达式的值和类型,用 var_dump()。
如果只是想得到一个易读懂的类型的表达方式用于调试,用 gettype()。
要查看某个类型,不要用 gettype(),而用 is_type() 函数。
■字符串转换为数值
- 当一个字符串被当作数字来求值时,根据以下规则来决定结果的类型和值。
- 如果包括“.”,“e”或“E”其中任何一个字符的话,字符串被当作 float 来求值。否则就被当作整数。
- 该值由字符串最前面的部分决定。如果字符串以合法的数字数据开始,就用该数字作为其值,否则其值为 0(零)。合法数字数据由可选的正负号开始,后面跟着一个或多个数字(可选地包括十进制分数),后面跟着可选的指数。指数是一个“e”或者“E”后面跟着一个或多个数字。
■强制类型强制转换 (参考:PHP手册)
PHP 中的类型强制转换和 C 中的非常像:在要转换的变量之前加上用括号括起来的目标类型。
允许的强制转换有:
- (int),(integer) - 转换成整型
- (bool),(boolean) - 转换成布尔型
- (float),(double),(real) - 转换成浮点型
- (string) - 转换成字符串
- (array) - 转换成数组
- (object) - 转换成对象
注意在括号内允许有空格和制表符
还可以用settype ( mixed var,
string type )进行强制转换.
1.强制转换为布尔值 (bool)|(boolean)
要明示地将一个值转换成 boolean,用 (bool) 或者 (boolean)
来强制转换。但是很多情况下不需要用强制转换,因为当运算符,函数或者流程控制需要一个 boolean
参数时,该值会被自动转换。
当转换为 boolean 时,以下值被认为是 FALSE:
布尔值 FALSE
整型值 0(零)
浮点型值 0.0(零)
空白字符串和字符串 "0"
没有成员变量的数组
没有单元的对象(仅适用于 PHP 4)
特殊类型 NULL(包括尚未设定的变量)
所有其它值都被认为是 TRUE(包括任何资源)
?<span>php </span><span>var_dump</span>((bool) ""); <span>//</span><span> bool(false)</span> <span>var_dump</span>((bool) 1); <span>//</span><span> bool(true)</span> <span>var_dump</span>((bool) -2); <span>//</span><span> bool(true)</span> <span>var_dump</span>((bool) "foo"); <span>//</span><span> bool(true)</span> <span>var_dump</span>((bool) 2.3e5); <span>//</span><span> bool(true)</span> <span>var_dump</span>((bool) <span>array</span>(12)); <span>//</span><span> bool(true)</span> <span>var_dump</span>((bool) <span>array</span>()); <span>//</span><span> bool(false)</span> <span>var_dump</span>((bool) "false"); <span>//</span><span> bool(true)</span> ?>
2.强制转换为整形(int)|(integer)
要明示地将一个值转换为 integer,用 (int) 或 (integer)
强制转换。不过大多数情况下都不需要强制转换,因为当运算符,函数或流程控制需要一个 integer 参数时,值会自动转换。还可以通过函数
intval() 来将一个值转换成整型。
a.从bool转换
b.从浮点数转换
取整,超出范围,结果不定
c.从字符串转换
参看字符串转换为数值
d.从其它类型转换 先换成 bool值,再转换
决不要将未知的分数强制转换为
integer,这样有时会导致意外的结果。
echo (int) ( (0.1+0.7) * 10 ); // 显示 7
?>
$str = "123.456abc7"; // (int)123
echo (int)$str;
$str = "abc123.456"; //
(int)0
$str =
true;
// (int)1
$str =
false;
// (int)0
3.强制转换为浮点型 (int)|(double)|(real)|doubleval_r()|floatval()|intval()
精度: 0.12345678901234 // double,real都一样
数据的丢失参 字符串转换为数值
4.强制换为字符串 (string) |strval()
可以用 (string) 标记或者 strval() 函数将一个值转换为字符串。当某表达式需要字符串时,字符串的转换会在表达式范围内自动完成。例如当使用 echo() 或者 print() 函数时,或者将一个变量值与一个字符串进行比较的时候。
- 布尔值 TRUE 将被转换为字符串 "1",而值 FALSE 将被表示为 ""(即空字符串)。这样就可以随意地在布尔值和字符串之间进行比较。
- 整数或浮点数数值在转换成字符串时,字符串由表示这些数值的数字字符组成(浮点数还包含有指数部分)。
- 数组将被转换成字符串 "Array",因此无法通过 echo() 或者 print() 函数来输出数组的内容。请参考下文以获取更多提示。
- 对象将被转换成字符串 "Object"。如果因为调试需要,需要将对象的成员变量打印出来,请阅读下文。如果希望得到该对象所依附的类的名称,请使用函数 get_class()。自 PHP 5 起,如果合适可以用 __toString() 方法。
- 资源类型总是以 "Resource id #1" 的格式被转换成字符串,其中 1 是 PHP 在运行时给资源指定的唯一标识。如果希望获取资源的类型,请使用函数 get_resource_type()。
- NULL 将被转换成空字符串。
可以将 PHP 的值转换为字符串以永久地储存它们。这种方法被称为序列化,可以用函数 serialize() 来完成该操作。如果在安装 PHP 时建立了 WDDX 支持,还可以将 PHP 的值序列化为 XML 结构。
4. 强制转换为数组 (array)
- 对于任何的类型:整型、浮点、字符串、布尔和资源,如果将一个值转换为数组,将得到一个仅有一个元素的数组(其下标为 0),该元素即为此标量的值。
- 如果将一个对象转换成一个数组,所得到的数组的元素为该对象的属性(成员变量),其键名为成员变量名。
- 如果将一个
<span>NULL</span>
值转换成数组,将得到一个空数组。
5. 转换为对象 (object)
如果将一个对象转换成对象,它将不会有任何变化。如果其它任何类型的值被转换成对象,内置类 stdClass 的一个实例将被建立。如果该值为 NULL,则新的实例为空。数组转换成对象将使键名成为属性名并具有相对应的值。对于任何其它的值,名为 scalar 的成员变量将包含该值
6. 转换为资源 (无法转换)
由于资源类型变量保存有为打开文件、数据库连接、图形画布区域等的特殊句柄,因此无法将其它类型的值转换为资源。
■PHP 类型比较表(看手册附录P)
以下的表格显示了 PHP 类型和比较运算符在松散和严格比较时的作用。该补充材料还和类型戏法的相关章节内容有关。
- 注意
- HTML 表单并不传递整数、浮点数或者布尔值,它们只传递字符串。要想检测一个字符串是不是数字,可以使用 is_numeric() 函数。
- 在没有定义变量 $x 的时候,诸如 if ($x) 的用法会导致一个 E_NOTICE 级别的错误。所以,可以考虑用 empty() 或者 isset() 函数来初始化变量。
PHP强制类型转换的实现方式
转 换 格 式 |
转 换 结 果 |
实 现 方 式 |
(int),(integer) |
将其他数据类型强制转换为整型 |
$a = "3";$b = (int)$a;$c = (integer)$a; |
(bool),(boolean) |
将其他数据类型强制转换为布尔型 |
$a = "3";$b = (bool)$a; $c = (boolean)$a; |
(float),(double),(real) |
将其他数据类型强制转换为浮点型 |
$a = "3"; $b = (float)$a;$c = (double)$a;$d = (real)$a; |
(string) |
将其他数据类型强制转换为字符串 |
$a = 3; $b = (string)$a; |
(array) |
将其他数据类型强制转换为数组 |
$a = "3"; $b = (array)$a; |
(object) |
将其他数据类型强制转换为对象 |
$a = "3"; $b = (object)$a; |
其他数据类型转换为整型
原 类 型 |
目 标 类 型 |
转 换 规 则 |
浮点型 |
整型 |
向下取整,即不会四舍五入而是直接去掉浮点型数据小数点后边的部分,只保留整数部分 |
布尔型 |
整型 |
TRUE 转换成整型数字 1 , FALSE 转换成整型数字 0 |
字符串 |
整型 |
字符串为纯整型数字,转换成相应的整型数字 字符串为带小数点数字,转换时去除小数点后面部分,保留整数部分 字符串以整型数字开头,转换时去除整型数字后面部分,然后按照规则 1 进行处理 字符串以带小数点数字开头,转换时去除小数后面部分,然后按规则 2 进行处理 字符串内容以非数字开头直接转换为 0 |
其他数据类型转换为浮点型
原 类 型 |
目 标 类 型 |
转 换 规 则 |
整型 |
浮点型 |
将整型数据直接转换为浮点型,数值保持不变 |
布尔型 |
浮点型 |
TRUE 转换成浮点型数字 1 , FALSE 转换成浮点型数字 0 |
字符串 |
浮点型 |
字符串为整型数字,直接转换成相应的浮点型数字 字符串以数字开头,转换时去除数字后面部分,然后按照规则 1 进行处理 字符串以带小数点数字开头,转换时直接去除数字后面部分,只保留数字部分 字符串以非数字内容开头直接转换为 0 |
其他数据类型转换为布尔型
原 类 型 |
目 标 类 型 |
转 换 规 则 |
整型 |
布尔型 |
0 转换为 FALSE ,非零的其他整型数字转换为 TRUE |
浮点型 |
布尔型 |
0 转换为 FALSE ,非零的其他浮点型数字转换为 TRUE |
字符串 |
布尔型 |
空字符串或字符串内容为零转换为 FALSE ,其他字符串转换为 TRUE |
NULL |
布尔型 |
直接转换为 FALSE |
数组 |
布尔型 |
空数组转换为 FALSE ,非空数组转换为 TRUE |
其他数据类型转换为数组
原 类 型 |
目 标 类 型 |
转 换 规 则 |
整型、浮点型、布尔型 字符串、资源 |
数组 |
将这几个数据类型强制转换为数组时,得到的数组只包含一个数据元素,该数据就是未转换前的数据,并且该数据的数据类型也与未转换前相同 |
对象 |
数组 |
转换时将对象的成员变量的名称作为各数组元素的 key ,而转换后数组每个 key 的 value 都为空,如果成员变量为私有的( private ),转换后 key 的名称为“类名 + 成员变量名”,如果成员变量为公有的( public ),转换后 key 的名称为成员变量名,如果成员变量为受保护的( protected ),转换后 key 的名称为“ *+ 成员变量名” |
NULL |
数组 |
直接转换为一个空数组 |
其他数据类型转换为对象
原类型 |
目标类型 |
转换规则 |
整型、浮点型 布尔型、字符串 |
对象 |
将其他类型变量转换为对象时,将会新建一个名为“ scalar ”的属性,并将原变量的值存储在这个属性中 |
数组 |
对象 |
将数组转换为对象时,数组的 key 作为对象成员变量的名称,对应各个 key 的 value 作为对象成员变量保存的值 |
NULL |
对象 |
直接转换为一个空对象 |
其他数据类型转换为字符串
原 类 型 |
目 标 类 型 |
转 换 规 则 |
整型 |
字符串 |
转换时直接在整型数据两边加上双引号作为转换后的结果 |
浮点型 |
字符串 |
转换时直接在浮点型数据两边加上双引号作为转换后的结果 |
布尔型 |
字符串 |
TRUE 转换为字符串“ 1 ” , FALSE 转换为字符串“ 0 ” |
数组 |
字符串 |
直接转换为字符串“ Array ” |
对象 |
字符串 |
直接转换为字符串“ Object ” |
NULL |
字符串 |
直接转换为空字符串 |

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











PHP 8.4는 상당한 양의 기능 중단 및 제거를 통해 몇 가지 새로운 기능, 보안 개선 및 성능 개선을 제공합니다. 이 가이드에서는 Ubuntu, Debian 또는 해당 파생 제품에서 PHP 8.4를 설치하거나 PHP 8.4로 업그레이드하는 방법을 설명합니다.

CakePHP는 PHP용 오픈 소스 프레임워크입니다. 이는 애플리케이션을 훨씬 쉽게 개발, 배포 및 유지 관리할 수 있도록 하기 위한 것입니다. CakePHP는 강력하고 이해하기 쉬운 MVC와 유사한 아키텍처를 기반으로 합니다. 모델, 뷰 및 컨트롤러 gu

VS Code라고도 알려진 Visual Studio Code는 모든 주요 운영 체제에서 사용할 수 있는 무료 소스 코드 편집기 또는 통합 개발 환경(IDE)입니다. 다양한 프로그래밍 언어에 대한 대규모 확장 모음을 통해 VS Code는

CakePHP는 오픈 소스 MVC 프레임워크입니다. 이를 통해 애플리케이션 개발, 배포 및 유지 관리가 훨씬 쉬워집니다. CakePHP에는 가장 일반적인 작업의 과부하를 줄이기 위한 여러 라이브러리가 있습니다.

이 튜토리얼은 PHP를 사용하여 XML 문서를 효율적으로 처리하는 방법을 보여줍니다. XML (Extensible Markup Language)은 인간의 가독성과 기계 구문 분석을 위해 설계된 다목적 텍스트 기반 마크 업 언어입니다. 일반적으로 데이터 저장 AN에 사용됩니다

JWT는 주로 신분증 인증 및 정보 교환을 위해 당사자간에 정보를 안전하게 전송하는 데 사용되는 JSON을 기반으로 한 개방형 표준입니다. 1. JWT는 헤더, 페이로드 및 서명의 세 부분으로 구성됩니다. 2. JWT의 작업 원칙에는 세 가지 단계가 포함됩니다. JWT 생성, JWT 확인 및 Parsing Payload. 3. PHP에서 인증에 JWT를 사용하면 JWT를 생성하고 확인할 수 있으며 사용자 역할 및 권한 정보가 고급 사용에 포함될 수 있습니다. 4. 일반적인 오류에는 서명 검증 실패, 토큰 만료 및 대형 페이로드가 포함됩니다. 디버깅 기술에는 디버깅 도구 및 로깅 사용이 포함됩니다. 5. 성능 최적화 및 모범 사례에는 적절한 시그니처 알고리즘 사용, 타당성 기간 설정 합리적,

문자열은 문자, 숫자 및 기호를 포함하여 일련의 문자입니다. 이 튜토리얼은 다른 방법을 사용하여 PHP의 주어진 문자열의 모음 수를 계산하는 방법을 배웁니다. 영어의 모음은 A, E, I, O, U이며 대문자 또는 소문자 일 수 있습니다. 모음이란 무엇입니까? 모음은 특정 발음을 나타내는 알파벳 문자입니다. 대문자와 소문자를 포함하여 영어에는 5 개의 모음이 있습니다. a, e, i, o, u 예 1 입력 : String = "Tutorialspoint" 출력 : 6 설명하다 문자열의 "Tutorialspoint"의 모음은 u, o, i, a, o, i입니다. 총 6 개의 위안이 있습니다
