PHP는 8가지 기본 데이터 유형을 지원합니다. 네 가지 스칼라 유형: 부울(Boolean), 정수(integer), float(부동 소수점 유형, double이라고도 함), 문자열(string), 두 가지 복합 유형: 배열(array), 객체(object) 및 마지막으로 두 가지 특수 유형이 있습니다. 유형: 리소스(리소스) 및 NULL(유형 없음)
참고: 표현식의 값과 유형을 확인하려면 var_dump() 함수를 사용하세요. 디버깅을 위해 사람이 읽을 수 있는 형식 표현을 원하는 경우 gettype() 함수를 사용하세요. 유형을 확인하려면 gettype()을 사용하지 말고 is_type 함수를 사용하십시오.
PHP는 약한 언어이므로 프로그램 실행 환경에 따라 자동으로 변환됩니다. == 기호를 사용할 때 숫자와 문자열을 비교하거나 숫자 내용이 포함된 문자열을 비교하면 문자열이 숫자로 변환됩니다. 값과 비교는 수치적으로 수행을 기반으로 합니다. 이 규칙은 스위치 문에도 적용됩니다. (절대 비교를 위해서는 ===를 사용하세요)
첫 번째 피연산자 유형 |
두 번째 피연산자 유형 |
유형 변환 |
Integer |
Float 포인트 종류 | integer는 부동 소수점 유형으로 변환됩니다. |
integer
string |
string은 숫자로 변환됩니다. 문자열을 부동 소수점 유형으로 변환하면 정수 유형도 변환됩니다. 부동 소수점 유형으로 |
|
부동 소수점 유형
String |
문자열은 부동 소수점 유형으로 변환됩니다 |
|
요약하자면, 부동소수점 유형 > 정수 유형 > 문자열 > 부울 유형
-
부울 유형
부울로 변환하면 다음 값은 FALSE로 간주됩니다.
다른 모든 값은 TRUE로 간주됩니다( 모든 리소스 포함).
부울 값 FALSE 자체
정수 값 0(영)
부동 소수점 값 0.0(영)
빈 문자열 및 문자열 "0"
다음과 같은 배열 어떤 요소도 포함하지 않습니다
멤버 변수를 포함하지 않는 객체(PHP 4.0에만 해당)
특수 유형 NULL(값이 할당되지 않은 변수 포함)
A SimpleXML 빈 태그에서 생성된 객체
정수형
정수 오버플로: 주어진 숫자가 정수 범위를 초과하면 부동 소수점으로 해석됩니다. 마찬가지로 연산 결과가 정수 범위를 초과하면 float가 반환됩니다.
-
PHP에는 (Java와 달리) 정수 나누기 연산자가 없습니다. 1/2은 float0.5를 생성합니다. 값을 정수로 변환하거나 소수 부분을 버리거나 더 나은 반올림을 위해 round() 함수를 사용할 수 있습니다.
<?php
var_dump(25/7); // float(3.5714285714286)
var_dump((int) (25/7)); // int(3)
var_dump(round(25/7)); // float(4)
?>
로그인 후 복사
부동소수점 숫자를 정수로 변환하면 반내림됩니다.
경고
알 수 없는 분수를 정수로 변환하지 마세요. 때로는 예측할 수 없는 결과가 발생할 수 있습니다.
<?php
echo (int) ( (0.1+0.7) * 10 ); // 显示 7!
?>
로그인 후 복사
Float 유형
<?php
$a = 0.1;
$b = 0.9;
$c = 1;
var_dump(($a+$b)==$c);//true
var_dump(($c-$b)==$a);//falseprintf("%.20f", $a+$b); // 1.00000000000000000000
printf("%.20f", $c-$b); // 0.09999999999999997780?>
로그인 후 복사
이 문제는 부동 소수점 계산에 정밀도가 포함되고 부동 소수점 숫자를 이진수로 변환하면 정밀도가 손실될 수 있기 때문에 발생합니다.
그러므로 부동 소수점 숫자가 마지막 숫자까지 정확하다고 믿지 말고 두 부동 소수점 숫자가 같은지 비교하지 마세요.
정말로 더 높은 정밀도가 필요한 경우 임의 정밀도 수학 함수를 사용해야 합니다.
高精度运算的方法如下:
bcadd 将两个高精度数字相加
bccomp 比较两个高精度数字,返回-1,0,1
bcp 将两个高精度数字相除
bcmod 求高精度数字余数
bcmul 将两个高精度数字相乘
bcpow 求高精度数字乘方
bcpowmod 求高精度数字乘方求模
bcscale 配置默认小数点位数,相当于Linux bc中的”scale=”
bcsqrt 求高精度数字平方根
bcsub 将两个高精度数字相减
로그인 후 복사
위의 경고 메시지에서 알 수 있듯이 두 부동 소수점 숫자가 동일한지 비교하는 것은 내부 표현으로 인해 문제가 있습니다. 그러나 부동 소수점 값을 비교하는 우회 방법이 있습니다.
부동 소수점 숫자가 같은지 테스트하려면 해당 값보다 아주 조금 큰 최소 오류 값을 사용하세요. 기계 엡실론 또는 최소 단위 정수라고도 하는 이 값은 계산에 허용될 수 있는 가장 작은 차이 값입니다.
정밀도는 소수점 이하 5자리와 같습니다.
<?php
$a = 1.23456789;
$b = 1.23456780;
$epsilon = 0.00001;
if(abs($a-$b) < $epsilon) {
echo "true";
}
?>
로그인 후 복사
문자열 유형
문자열이 큰따옴표(")로 묶인 경우 PHP는 n, \, $
와 같은 일부 특수 문자를 구문 분석합니다. 큰따옴표로 정의된 문자 가장 중요한 기능
문자열은 키와 연결된 유형입니다.
array() 언어 구성을 사용하여 원하는 만큼의 키를 만들 수 있습니다. 쉼표로 구분된 값 쌍 array( key => value , ...
)
// 键(key)可是是一个整数 integer 或字符串 string
// 值(value)可以是任意类型的值
此外 key 会有如下的强制转换:
<?php
$arr = array(5 => 1, 12 => 2);
$arr[] = 56; // This is the same as $arr[13] =56; at this point of the script
$arr["x"] = 42; // This adds a new element to the array with key "x"
unset($arr[5]); // This removes the element fromthe array
unset($arr); // This deletes the whole array
로그인 후 복사
에는 유효한 정수 값이 포함된 문자열이 정수로 변환됩니다. 예를 들어 키 이름 "8"은 실제로 8로 저장됩니다. 부동 소수점 숫자도 정수로 변환됩니다. 즉, 소수 부분은 반올림됩니다. 예를 들어 키 이름 8.7은 실제로 8로 저장됩니다. 또한 정수 유형으로 변환되며 키 이름 false는 0으로 저장됩니다.
Null은 빈 문자열로 변환됩니다. 즉, 키 이름 null은 실제로 다음과 같이 저장됩니다. "". 배열과 개체를 키 이름으로 사용할 수 없습니다. 그러면 경고가 발생합니다. 동일한 키 이름이 여러 셀에 사용되면 마지막 이름만 사용됩니다.
- PHP 배열은 실제로 인덱스 배열과 연관 배열을 구별하지 않기 때문에 정수 및 문자열 키 이름을 모두 포함할 수 있습니다.
如果对给出的值没有指定键名,则取当前最大的整数索引值,而新的键名将是该值加一。
如果指定的键名已经有了值,则该值会被覆盖。
要删除某键值对,对其调用 unset() 函数。unset() 函数允许删除数组中的某个键。但要注意数组将不会重建索引。如果需要删除后重建索引,可以用 array_values() 函数。
foreach 控制结构是专门用于数组的。它提供了一个简单的方法来遍历数组。
数组(Array) 的赋值总是会涉及到值的拷贝。使用引用运算符通过引用来拷贝数组。
<?php
$arr1 = array(2, 3);
$arr2 = $arr1;
$arr2[] = 4; // $arr2 is changed,// $arr1 is still array(2, 3)
$arr3 = &$arr1;
$arr3[] = 4; // now $arr1 and $arr3 are the same
?>
로그인 후 복사
NULL
特殊的 NULL 值表示一个变量没有值。NULL 类型唯一可能的值就是 NULL。
在下列情况下一个变量被认为是 NULL:
1. 被赋值为 NULL。2. 尚未被赋值。3. 被 unset()。
转换到 NULL :使用 (unset) $var 将一个变量转换为 null 将不会删除该变量或 unset 其值。仅是返回 NULL 值而已。
相关推荐:
PHP数据类型转换的转换
解析PHP数据类型之对象(Object)
PHP数据类型之字符串类型
PHP数据类型之布尔型变量详解
php数据类型
위 내용은 PHP 데이터 유형 예제에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!