PHP 데이터 유형의 자동 변환 및 강제 변환
PHP는 PHP 5.x 단계에서는 완전히 약한 유형의 프로그래밍 언어입니다. 약한 타입(weak type)은 변수를 선언할 때 변수의 타입을 명시할 필요가 없다는 것을 의미합니다. 정수 변수를 선언하고 싶습니다. 유형을 앞에 쓴 다음 변수를 작성할 필요가 없습니다.
PHP 7의 성능이 대폭 향상되었습니다. 실제 테스트 결과에 따르면 PHP 7의 성능은 PHP5.6에 비해 거의 200% 향상되었습니다. PHP 7의 어떤 부분에서는 유형을 강제로 지정하거나 유형을 강제로 지정하지 않고 변수를 선언할 수 있습니다.
다음은 강제형변환과 자동형변환에 대해 이야기해보겠습니다.
【암묵적 수준】부울 값의 자동 유형 변환 및 강제 유형 변환에 대한 영어 단어
부울 값의 자동 유형 변환
Automatic 유형 변환 즉, 특정 상황에서 작업에 참여하기 위해 데이터 유형이 자동으로 다른 유형으로 변경됩니다. 자동 유형 변환은 연산 및 판단 중에 특정 값이 자동으로 변환되는 경우 발생합니다.
다음 상황은 Boolean 값 판단 시 자동 형 변환:
정수형의 1,0은 false이고, 그 외 정수값은 모두 true
2, 부동 소수점의 경우 0.0, 부울 값의 경우 false입니다. 소수점 이하 0이 아닌 값이 있는 한 참입니다.
3, 빈 문자열은 false이며, 공백이 있으면 true로 간주됩니다.
문자열에서 4, 0도 false로 처리됩니다. 그 밖의 모든 것은 참입니다
5. 빈 배열도 값이 있는 한 거짓으로 간주됩니다.
6, 비어 있음도 거짓
7, 성공 선언되지 않은 리소스도 거짓
위의 원칙을 결과로 하나씩 실험해 보겠습니다.
정수인 경우 1, 0은 false이고 다른 모든 정수 값은 true입니다.
<?php //整型的0,换成整型的其他值试试 $bool = 0; if($bool){ echo '美女美女我爱你'; }else{ echo '凤姐凤姐爱死我,执行假区间咯'; } ?>
부동 소수점인 경우 2, 0.0, 부울 값인 경우 false입니다. 소수점 뒤에 0이 아닌 값이 있는 한 참입니다.
<?php //浮点类型的的0,换成其他值试试 $bool = 0.0; if($bool){ echo '美女美女我爱你'; }else{ echo '凤姐凤姐爱死我,执行假区间咯'; } ?>
3, 빈 문자열은 거짓이며, 공백이 있으면 참으로 간주됩니다.
<?php //空字符串,中间没有空格哟。实验完加个空格试试 $str = ''; if($str){ echo '美女美女我爱你'; }else{ echo '凤姐凤姐爱死我,执行假区间咯'; } ?>
문자열에서 4, 0도 false로 간주됩니다. 그 밖의 모든 것은 참입니다
<?php //0这个字符串哟,试试其他值看看 $str = '0'; if($str){ echo '美女美女我爱你'; }else{ echo '凤姐凤姐爱死我,执行假区间咯'; } ?>
5. 빈 배열도 값이 있는 한 거짓으로 간주됩니다.
<?php //这个数组当中啥也没放 $arr = array(); if($arr){ echo '美女美女我爱你'; }else{ echo '凤姐凤姐爱死我,执行假区间咯'; } ?>
6, 비어 있는 것도 false
<?php //声明了一个空的变量$bool $bool = null; if($bool){ echo '美女美女我爱你'; }else{ echo '凤姐凤姐爱死我,执行假区间咯'; } ?>
7, 성공하지 못한 리소스도 false
<?php //下面这段代码会显示警告,可忽略。暂时只需要对着实验知道效果即可:未声成功的资源也为假 //下面这一块了解意思就行:打开adasfasfasfdsa.txt这个不存在的文件 $res = fopen('adasfasfasfdsa.txt','r'); if($res){ echo '美女美女我爱你'; }else{ echo '凤姐凤姐爱死我,执行假区间咯'; } ?>
다른 유형의 자동 유형 변환
작업 중에도 자동 유형 변환이 발생할 수 있습니다. 우리가 요약하는 모든 규칙과 의견은 동일합니다. 먼저 요약하고 그다음 실험합니다.
스칼라 연산만 다음과 같은 자동 유형 변환을 생성합니다.
<?php //布尔变整型参与运算 $fo = true; $result = $fo + 10; //$result 结果为整型的11,因为$fo布尔的true变为了1 //如果$fo的值为0 var_dump($result); //字符串类型 $str = '419不要爱'; $result = $str + 1; //结果为420。因为将$str变为了整型的419参与运算 //将419放在字符串中间和结尾试试 var_dump($result); ?>
요약:
불리언 값이 true이고 연산에 참여하면 정수 또는 부동 소수점 1이 됩니다. 불리언 값이 연산에 참여할 때 false이면 정수 또는 부동 소수점 0이 됩니다. 시작 문자열 중 정수형이나 부동소수점형의 문자가 해당 형으로 변환되어 연산에 참여하게 됩니다.
강제형 변환
강제형 변환에는 세 가지 방법이 있습니다. :
1. intval(), floatval(), strval()
3가지 함수를 사용하여 타입 변환을 완료합니다.
2. 변수 앞에 ()를 추가하고 안에 타입을 씁니다. , 변환하고 다른 변수에 할당
3.settype(variable, Type) 수량 자체를 직접 변경
실험해 보겠습니다:
<?php
$float = 1.23;
$result = intval($float);
//看看结果是不是变了?
var_dump($result);
//鸭脖子为整型的5
$yabozi = 5;
$re = floatval($yabozi);
var_dump($re);
//定义整型的变量
$yabozi = 23;
$bian = strval($yabozi);
//强制变成字符串试试
var_dump($bian);
?>
<?php
//定义一个变量,我们来变化一下试试
$transfer = 12.8;
//把浮点变为整型
$jieguo = (int)$transfer;
var_dump($jieguo);
//把浮点变为布尔
$jieguo = (bool) $transfer;
var_dump($jieguo);
//把布尔变整型
$bool = true;
$jieguo = (int)$bool;
var_dump($jieguo);
//把浮点变数组
$fo = 250;
$jieguo = (array)$fo;
var_dump($jieguo);
//其他的操作方式,按照文字总结的规律你来试试
?>
<?php
//定义浮点变为整型
$fo = 250.18;
//settype第二个参数是int,你实验的时候要记得第二个参数要为字符串类型
settype($fo,'int');
//输出看看结果
var_dump($fo);
?>
1 .정수형으로 변환하면 정수형 0이 된다 2. 플로팅형으로 변환하면 point이면 부동소수점 값 0 3. 문자열로 변환하면 빈 문자열이 된다'' 4. 부동소수점 123.0을 문자열로 변환 문자열 123이 됩니다. 5. 문자열로 변환된 부동 소수점 123.2는 문자열 123.2이 됩니다. 6. 부동 소수점이 아무리 커도 제거되고 그 뒤의 값이 됩니다. 소수점은 폐기됩니다 7. 문자열을 정수로 변환할 경우 해당 값이 앞에 있으면 이전 값을 정수형 변환 값으로 가져옵니다. 8.settype(variable,'null'); unset() a 변수와 동일 9.$Target 변수 = (type)$ 작동 변수는 대상 유형만 변경합니다. 변수 , 원래 변수의 유형은 변경되지 않습니다. Settype은 원래 값을 변경합니다.
<?php //小可爱,记得自己做实验,验证上面的9点哟 $t=12.9; settype($t,'int'); var_dump($t); ?>
set 발음: [sɛt]
발음: [taɛp ]