Php入门教程之PHP 数据类型用法详解
数据类型在php并不像java中那详细那么多种类型,下面我来给各位同学介绍php 数据类型的一些基础知道,各位同学可参考.
PHP 数据类型
PHP 支持八种原始类型(type).
四种标量类型:
1.string(字符串) 2.integer(整型) 3.float(浮点型,也作 double ) 4.boolean(布尔型)
两种复合类型:
1.array(数组) 2.object(对象)
两种特殊类型:
1.resource(资源) 2.NULL(空)
查看变量类型
通过 gettype() 函数可以方便的查看某个变量的类型:
$bool = TRUE; // 布尔型
$str = "foo"; // 字符串
$int = 12; // 整型
echo gettype($bool); // 输出 boolean
echo gettype($str); // 输出 string
echo gettype($int); // 输出 integer
?>
判断变量类型
如果想通过判断变量类型来可以使用 is_type 函数:
$var_int = 12;
// 如果 $var_int 是 int 类型,这进行加法
if (is_int($var_int)) {
$var_int = $var_int + 4;
}
echo $var_int; // 输出 16
?>
以上基本就是PHP数据类型的基本内容,大家如果想了解具体每个数据类型的用法,可以查阅PHP手册,里面有详细的说明.
数据类型转换
PHP数据类型有三种转换方式:
在要转换的变量之前加上用括号括起来的目标类型
使用3个具体类型的转换函数,intval()、floatval()、strval()
使用通用类型转换函数settype(mixed var,string type)
第一种转换方式: (int) (bool) (float) (string) (array) (object)
$num1 = 3.14;
$num2 = (int)$num1;
var_dump($num1); //输出float(3.14)
var_dump($num2); //输出int(3)
?>
第二种转换方式: intval() floatval() strval()
$str = "123.9abc";
$int = intval($str); //转换后数值:123
$float = floatval($str); //转换后数值:123.9
$str = strval($float); //转换后字符串:"123.9"
?>
第三种转换方式: settype();
$num4 = 12.8;
$flg = settype($num4, "int");
var_dump($flg); //输出bool(true)
var_dump($num4); //输出int(12)
?>
PHP数据类型隐性转换的陷阱,我这里说的是php5+上跑的,php4的请飘过.先把错误报告打开,以防看不到错误信息
error_reporting(E_ALL);
ini_set('display_errors', true);
?>
根据php manual 中 http://www.php.net/manual/zh/language.operators.comparison.php
"Comparison Operators" 一章的说明可知,number 和string进行比较的时候,会先将string类型首先转化为number,然后再进行比较操作.
1.类型自动转换为数组
当我们把一个非数组的变量当做数组来调用的时候,该变量在调用时数据类型临时自动转换成数组.
实例代码如下:
$str = 'string';
var_dump($str['aaa']); // string(1) "s"
var_dump($str); // string(6) "string"
if ($str['aaa'] === $str[0]) {
print "===";
}
?>
如下例子可以明显的看出下标类型自动转换在发生.
$link = 'yulans';
$key = '1-10';
echo "$link[$key]\n"; // 同 $link[1]
echo "{$link[$key]}\n"; // 同 $link[1]
//echo "$link['$key']\n"; // 报错
echo "{$link['$key']}\n"; // 同 $link[0]
?>
这里字符串在 var_dump($str['aaa']) 被临时转换成了数组 array('s','t','r','i', 'n','g'),而用关联数组方式
$str['aaa']读取索引数组的值,关联数组的下标'aaa'将被转换成整形下标,因而在这里的$str['aaa']全等于$str[0].其他数据类型隐性转换成数组也隐藏有陷阱,一般都不是报出undefined index错误.
举例如下代码:
/**
* 测试变量隐性转换成数组
*
* @param mixed $param
*/
function test2Arr($param) {
var_dump($param['abc']);
}
test2Arr(false); // NULL
test2Arr(123); // NULL
test2Arr(123.456); // NULL
test2Arr('string'); // string(1) "s"
test2Arr(array(
'abc' => 'text'
)); // string(4) text
test2Arr(new ArrayObject()); // Notice: undefined index: abc
?>
解决办法:
函数参数数据类型是数组的时候,防止用户输入字符串导致错误,如下例子,当添加用户的时候,我们要求用户必须输入用户名.没有哪个SB把要求是数组的参数传入字符串,但是防人之心不可无,说不定我连续工作超过十几个小时后一不小心就成那个SB了,又或许某人想绕过代码执行操作.
/**
* 添加用户(错误的写法)
*
* @param array $user
*/
function addUser($user) {
if (emptyempty($user['name'])) { // 这里当输入类型是不为空的字符串的时候会出错,
echo "用户名必填\n";
return false;
}
// do sth.
echo "测试\n";
return true;
}
/**
* 添加用户(正确的写法)
*
* @param array $user
*/
function addUser2($user) {
if (!is_array($user) || emptyempty($user['name'])) {
echo "用户名必填\n";
return false;
}
// do sth.
echo "测试\n";
return true;
}
$user = 'xiaoxiao';
addUser($user);
addUser2($user);
?>
2.纯数字字符串比较时自动转换成整形超过范围时发生溢出
$x1 = '111111111111111111';
$x2 = '111111111111111112';
echo ($x1 === $x2) ? "true" : "false"; // false 如我们所愿,这两个字符串确实不一样.
echo ($x1 == $x2) ? "true" : "false"; // true 这里被偷偷的转换类型了,
// 成了 echo (intval($x1) == intval($x2)) ? "true" : "false"; 整形溢出
?>
3、整形和字符串比较时数据类型隐性转换有可能发生问题
$number = 0;
$string = 'text';
if ($number == $string) {
print "true";
} else {
print "false";
}
?>
很遗憾这里输出的是 true,我们知道 $number === $string 肯定是false,手册上说 === 是比较值&&数据类型,而用 == 只是比较值,$number == $string 这里不是比较值吗? '0' 和 'text' 明显不一样啊.小心了,这里的$string是先被秘密转成和$number一样的整形再比较的,$number == (int)$string的确是true
4. in_array 小陷阱
因为in_array会将0 和's' 进行比较,0是number类型,'s'是string类型, 's'转化为number的结果为0,而0 == 0 的结果是true,所以in_array(0, array('s', 'ss'))的结果也是true.如果把in_array 的第三个参数strict设置为 true,比较的时候 就会判断值和类型是否都相当.如果都相当的话,才会返回true,否则返回false.

핫 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)

뜨거운 주제











MySQL 데이터베이스에서 성별 필드는 일반적으로 ENUM 유형을 사용하여 저장할 수 있습니다. ENUM은 사전 정의된 값 세트에서 필드 값으로 하나를 선택할 수 있는 열거형 유형입니다. ENUM은 성별과 같이 고정되고 제한된 옵션을 나타낼 때 좋은 선택입니다. 특정 코드 예를 살펴보겠습니다. 성별을 포함한 사용자 정보가 포함된 "users"라는 테이블이 있다고 가정합니다. 이제 성별 필드를 만들고 싶으면 다음과 같이 테이블 구조를 디자인할 수 있습니다. CRE

MySQL에서 성별 필드에 가장 적합한 데이터 유형은 ENUM 열거 유형입니다. ENUM 열거 유형은 가능한 값 세트를 정의할 수 있는 데이터 유형입니다. 성별에는 일반적으로 남성과 여성이라는 두 가지 값만 있기 때문에 성별 필드는 ENUM 유형을 사용하는 데 적합합니다. 다음으로, 특정 코드 예제를 사용하여 MySQL에서 성별 필드를 생성하고 ENUM 열거 유형을 사용하여 성별 정보를 저장하는 방법을 보여 드리겠습니다. 다음 단계는 다음과 같습니다. 먼저 다음을 포함하여 MySQL에서 users라는 테이블을 만듭니다.

WPS는 일반적으로 사용되는 사무용 소프트웨어 제품군이며 WPS 테이블 기능은 데이터 처리 및 계산에 널리 사용됩니다. WPS 테이블에는 두 날짜 사이의 시차를 계산하는 데 사용되는 매우 유용한 함수인 DATEDIF 함수가 있습니다. DATEDIF 함수는 영어 단어 DateDifference의 약어입니다. 구문은 다음과 같습니다. DATEDIF(start_date,end_date,unit) 여기서 start_date는 시작 날짜를 나타냅니다.

간결하고 이해하기 쉬운 MyBatis 입문 튜토리얼: 단계별로 첫 번째 프로그램 작성 MyBatis는 데이터베이스와의 상호 작용 프로세스를 단순화하는 인기 있는 Java 지속성 계층 프레임워크입니다. 이 튜토리얼에서는 MyBatis를 사용하여 간단한 데이터베이스 작업을 생성하고 수행하는 방법을 소개합니다. 1단계: 환경 설정 먼저 Java 개발 환경이 설치되어 있는지 확인하세요. 그런 다음 최신 버전의 MyBatis를 다운로드하여 Java 프로젝트에 추가하세요. 마이바티스 공식 홈페이지에서 다운로드 가능합니다.

MySQL의 ISNULL() 함수는 지정된 표현식이나 열이 NULL인지 여부를 확인하는 데 사용되는 함수입니다. 부울 값을 반환하며, 표현식이 NULL이면 1, 그렇지 않으면 0을 반환합니다. ISNULL() 함수는 SELECT 문이나 WHERE 절의 조건부 판단에 사용할 수 있습니다. 1. ISNULL() 함수의 기본 구문: ISNULL(expression) 여기서 표현식은 NULL인지 또는 NULL인지를 결정하는 표현식입니다.

Python은 간단하고 읽기 쉬운 구문으로 다양한 분야에서 널리 사용됩니다. 프로그래밍 효율성을 높이고 코드 작동 방식을 깊이 이해하려면 Python 구문의 기본 구조를 숙지하는 것이 중요합니다. 이를 위해 이 기사에서는 Python 구문의 다양한 측면을 자세히 설명하는 포괄적인 마인드 맵을 제공합니다. 변수 및 데이터 유형 변수는 Python에서 데이터를 저장하는 데 사용되는 컨테이너입니다. 마인드맵은 정수, 부동 소수점 숫자, 문자열, 부울 값 및 목록을 포함한 일반적인 Python 데이터 유형을 보여줍니다. 각 데이터 유형에는 고유한 특성과 작업 방법이 있습니다. 연산자 연산자는 데이터 유형에 대한 다양한 작업을 수행하는 데 사용됩니다. 마인드맵은 산술 연산자, 비율 등 Python의 다양한 연산자 유형을 다룹니다.

Apple 단축키 명령 사용 방법 지속적인 기술 발전으로 휴대폰은 사람들의 삶에 없어서는 안될 부분이 되었습니다. 수많은 휴대폰 브랜드 중에서도 Apple 휴대폰은 안정적인 시스템과 강력한 기능으로 늘 사용자들의 사랑을 받아왔습니다. 그 중 Apple 단축키 명령 기능은 사용자의 휴대폰 경험을 더욱 편리하고 효율적으로 만들어줍니다. Apple Shortcuts는 Apple이 iOS12 이상 버전을 위해 출시한 기능으로, 사용자 정의 명령을 생성하고 실행하여 보다 효율적인 작업을 수행하고 휴대폰 작업을 단순화하는 데 도움이 됩니다.

SQL의 고유한 사용법에 대한 자세한 설명 SQL 데이터베이스에서는 중복된 데이터를 제거해야 하는 상황이 자주 발생합니다. 이때, 고유한 키워드를 사용하면 중복된 데이터를 제거하고 쿼리 결과를 보다 명확하고 정확하게 만드는 데 도움이 됩니다. 구별의 기본 사용법은 매우 간단합니다. 선택 문에서 구별 키워드를 사용하면 됩니다. 예를 들어, 다음은 일반적인 선택 문입니다: SELECTcolumn_name
