php学习笔记之--php变量与常量
php变量与常量
一、目录
第一章 变量
1.1变量的声明
1.2变量的命名
1.3变量的数据类型
1.4变量数据类型之间的转换
1.5与变量和类型有关的一些常用函数
第二章 常量
2.1常量的声明与使用
2.1预定义常量和魔术常量
第一章 变量
1.1变量的声明
1.变量以$开头定义,由$和标识符组成,标识符就是变量的名称。(函数和类的名称也是标识符)
$变量名=值
1.2变量的命名
1. 变量前一定要使用”$”, 声明和使用都要有这个符号。
2. 可以是任意长度,有任何字母、数字、下划线组成;但是不能以数字开头
3.不能使用PHP的运算符号+ - * / % & .
4. PHP可以使用系统关键字作为变量名
5. PHP变量区分大小写,(只有变量和常l量区分大小写,其它不区分)
6.变量名称一定要有意义,可以使用英文单词,也可以使用汉语拼音。
7.$aaaBbbCcc 变量的命名风格,驼峰法。
注意:可变变量(一个变量的变量名可以动态设置和使用)
变量的引用赋值(使用一个“&”符号加到将要赋值的变量前面(源变量))
数组与类使用PHP的可变变量名的注意
可以像C++那样, 在变量的前面加上&, 例如:$a = &$b 对一个变量进行值传递。
1.3变量的数据类型
1.PHP是弱类型的语言,变量的类型由存储的值决定
2.PHP中共有8种类型
四种标量类型:
整 型:int integer
布尔型:bool boolean
浮点型:float, double, real
字符串:string
两种复合类型
数组: array
对象: object
两种特殊类型
资源类型:resource
空类型:null
注:
给一个变量赋值为0123,但是输出该变量的值总是为其他数字,请问这是什么问题?PHP 解释器会把以0开始的数字当做是八进制的,所以它的值会变成八进制的。
$a = 0.2+0.7;$b = 0.9;var_dump($a == $b);打印出的结果是:bool(false)。也就是说在这里 0.2+0.7 的计算结果与 0.9 并不相等。请问这个问题如何解决?
PHP官方手册说明:显然简单的十进制分数如 0.2 不能在不丢失一点点精度的情况下转换为内部二进制的格式。这和一个事实有关,那就是不可能精确的用有限位数表达某些十进制分数。例如,十进制的 1/3 变成了 0.3333333...。我们将上面的变量用双精度格式打印出来:$a = 0.2+0.7;$b = 0.9;printf("%0.20f", $a);echo '
';printf("%0.20f", $b);
输出结果如下:
0.899999999999999911180.90000000000000002220
显然在这里,实际上作为浮点型数据,其精度已经损失了一部分,达不到完全精确。所以永远不要相信浮点数结果精确到了最后一位,也永远不要比较两个浮点数是否相等。需要说明的是,这不是PHP的问题,而是计算机内部处理浮点数的问题!在 C、JAVA 等语言中也会遇到同样的问题。
所以要比较两个浮点数,需要将其控制在我们需要的精度范围内再行比较,因此使用 bcadd() 函数来对浮点数想加并进行精度转换(为字符串):
var_dump(bcadd(0.2,0.7,1) == 0.9); // 输出:bool(true) 浮点数取整
在《PHP 取整函数 ceil 与 floor》一文中,曾有例子:
经过上面对浮点数计算的探讨,知道这是浮点数计算结果不完全精确造成的:
经过上面对浮点数计算的探讨,知道这是浮点数计算结果不完全精确造成的,因此使用 round() 函数处理一下即可:
虽然 round() 函数是按照指定的精度进行四舍五入,但保留小数点后一位,对我们的取整结果是没影响的。
1.4变量数据类型之间的转换
一种是强制转换:
1.setType(变量, 类型); //这个函数将原变量的类型改变
2.$a=(int)"123abc"; //在赋值前使用(类型)的形式, 不会改变原变量的类型
3.$变量=intval(变量或值); //形成一个新的变量,原有的变量不变
注意:
1.bool型的转换
2.整型在内存中占4个字节32位 最大2.147e9
3.浮点型在内存中占8个字节64位
4.整型与浮点型之间转换时的溢出/精度损失
5.字符串与整型和浮点型之间的转换
一种是自动转换:
最常用的方式,因为这种我们开发时不用去管理类型,变量会根据运行环境自动转换
4.PHP中数据类型转换中的注意
$str="100.123abc";
setType( $str,bool);
var_dump( $str);
整型 为4个字节2个字32位2.147e9
浮点型 为8个字节4个字64位
$float1=123.456;
$float2=2.147e9;
$int1=(int) $float1;
$int2=(int) $float3;
var_dump( $int1);
var_dump( $int2);
(int)(10*(0.7+0.1)) // 结果为7
--------
$amount = 19.99 * 100;
printf("%.13f", $amount);
---------
$num=-1000;
print( $num."\n");
$i_str= sprintf("%u", $num);
print( $i_str."\n");
$i1= intval( $i_str);
print( $i1."\n");
$i2= intval( floatval( $i_str));
print($i2."\n");
输出结果
-1000
4294966296
2147483647
-1000
整型=浮点型 注意:溢出/精度损失
5.字符串转换为整型和浮点
$a="100abc"; $a="a100bc";
$a="abc"; $a="100.123zbc"
$a="100eabc"; $a="100e5abc"
$a=10;
$b="100abc";
$c= true;
$d=12.34;
$sum= $a+ $b+ $c+ $d;
var_dump($sum);
1.5与变量和类型有关的一些常用函数
isset(); //测试变量是否存在,返回的值值如果是null,也表示空
empty(); //判断一个变量是否为空, “” null
unset();
setType();
getType();
var_dump();
变量类型测试函数:
is_bool()
is_int() is_integer() is_long()
is_string()
is_float() is_double()is_real()
is_array()
is_object()
is_resource()
is_null()
is_scalar()
is_numberic()
is_callable()
第二章 常量
2.1常量的声明与使用
1.常量是一个简单值的标识符 2.常量定义后不能再改变他的值,也不能使用unset()取消 3.常量可以不用理会变量范围的规则而在任何地方都可以定义和访问 4.声明常量使用define("常量名",值); 5.常量声明名在声明和使用都不使用"$" 6.常量名称习惯都使用大写 7.常量的值只能用标量类型(int, float, bool, string) 8.常量一定要在声明时就给值 9.defined("常量"); //查看某个常量是否存在
2.2预定义常量和魔术常量
$_GET[];
$_POST[];
$_REQUEST[];
$_COOKIE[];
$_SESSION[];
$_FILES[]; //获取上传表单数据
$_SERVER[];
$_ENV[];

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

뜨거운 주제











Laravel은 직관적 인 플래시 방법을 사용하여 임시 세션 데이터 처리를 단순화합니다. 응용 프로그램에 간단한 메시지, 경고 또는 알림을 표시하는 데 적합합니다. 데이터는 기본적으로 후속 요청에만 지속됩니다. $ 요청-

PHP 클라이언트 URL (CURL) 확장자는 개발자를위한 강력한 도구이며 원격 서버 및 REST API와의 원활한 상호 작용을 가능하게합니다. PHP CURL은 존경받는 다중 프로모토콜 파일 전송 라이브러리 인 Libcurl을 활용하여 효율적인 execu를 용이하게합니다.

Alipay PHP ...

Laravel은 간결한 HTTP 응답 시뮬레이션 구문을 제공하여 HTTP 상호 작용 테스트를 단순화합니다. 이 접근법은 테스트 시뮬레이션을보다 직관적으로 만들면서 코드 중복성을 크게 줄입니다. 기본 구현은 다양한 응답 유형 단축키를 제공합니다. Illuminate \ support \ Facades \ http를 사용하십시오. http :: 가짜 ([ 'google.com'=> 'Hello World', 'github.com'=> [ 'foo'=> 'bar'], 'forge.laravel.com'=>

고객의 가장 긴급한 문제에 실시간 인스턴트 솔루션을 제공하고 싶습니까? 라이브 채팅을 통해 고객과 실시간 대화를 나누고 문제를 즉시 해결할 수 있습니다. 그것은 당신이 당신의 관습에 더 빠른 서비스를 제공 할 수 있도록합니다.

기사는 PHP 5.3에 도입 된 PHP의 LSB (Late STATIC BING)에 대해 논의하여 정적 방법의 런타임 해상도가보다 유연한 상속을 요구할 수있게한다. LSB의 실제 응용 프로그램 및 잠재적 성능

기사는 입력 유효성 검사, 인증 및 정기 업데이트를 포함한 취약점을 방지하기 위해 프레임 워크의 필수 보안 기능을 논의합니다.

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