ホームページ >バックエンド開発 >PHPチュートリアル >PHP 学習ノート -- PHP の変数と定数
PHP の変数と定数
1. ディレクトリ
第 1 章 変数
1.1 変数の宣言
1.2 変数の名前付け
1.3 変数のデータ型
1.4 変数データ型間の変換
1.5 一般的なもの変数と型に関する使用関数
第2章 定数
2.1 定数の宣言と使用
2.1 定義済み定数とマジック定数
第1章 変数
1.1 変数の宣言
1 .変数は次から定義されます。 $ は、$ と識別子で構成されます。識別子は変数の名前です。 (関数やクラスの名前も識別子です)$変数名 = 値
1.2 変数の命名
1. 変数の前には必ず「$」を使用し、この記号は宣言と使用の両方で使用する必要があります。
2. 任意の長さで、任意の文字、数字、アンダースコアで構成できますが、数字で始めることはできません
3. PHP の算術記号 + - * / % & .
4. PHPシステムキーワードを変数名として使用できます
5. PHP 変数は大文字と小文字が区別されます (変数と定数のみが大文字と小文字を区別し、その他は区別されません)
6. 変数名は意味のあるものでなければなりません 英語の単語または中国語のピンインを使用できます。 。
7.$aaaBbbCcc 変数の命名スタイル、キャメルケース方式。
注: 変数変数(変数の変数名を動的に設定して使用できます)
変数参照の代入(代入する変数(ソース変数)の前に「&」記号を使用します)
配列の使用およびクラス PHP の変数変数名に関する注意事項
C++ のように、変数の前に & を追加できます。たとえば、$a = &$b と変数を値で渡すことができます。
1.3 変数のデータ型
1.PHPは弱い型付け言語であり、変数の型は格納されている値によって決まります
2.PHPには8つの型があります
4つのスカラー型:
整数型: int integer
Boolean型: bool boolean
浮動小数点型: float、double、real
String: string
2つの複合型
Array: array
Object: object
2つの特殊な型
リソースタイプ: resource
空の型: null
注:
変数に値 0123 を割り当てますが、変数の出力値は常に他の数値になります 何が問題でしょうか。
PHP インタープリターは 0 で始まる数値を 8 進数として扱うため、その値は 8 進数になります。
すごいです
公式 PHP マニュアルでは次のように説明されています: どうやら 0.2 のような単純な小数は、精度を少し損なうことなく内部バイナリ形式に変換できないようです。これは、有限の桁数で特定の小数を正確に表現することが不可能であるという事実と関係しています。たとえば、10 進数の 1/3 は 0.3333333… となります。上記の変数を倍精度形式で出力します: $a = 0.2+0.7;$b = 0.9;printf("%0.20f", $a);echo 'df250b2156c434f3390392d09b1c9563';printf("% 0.20 f", $b);
出力結果は次のとおりです:
0.89999999999999911180.90000000000000002220
明らかに、ここでは浮動小数点データとして精度の一部が失われており、完全な精度に達することはできません。したがって、浮動小数点数の結果が最後の桁まで正確であると決して信じないでください。また、2 つの浮動小数点数が等しいかどうかを比較しないでください。これは PHP の問題ではなく、コンピュータの内部浮動小数点数処理の問題であることに注意してください。 C や JAVA などの言語でも同じ問題が発生します。
したがって、2 つの浮動小数点数を比較するには、比較する前に必要な精度の範囲内で浮動小数点数を制御する必要があるため、bcadd() 関数を使用して浮動小数点数を加算し、精度を (文字列に) 変換します。 (bcadd(0.2,0.7,1) == 0.9); // 出力: bool(true) 浮動小数点数の丸め
「PHP の丸め関数 ceil と Floor」の記事に次の例がありました:
100b57e2055d2ac92cdc98fcd9de8ec8
浮動小数点計算に関する上記の説明の後、これは不完全な浮動小数点計算結果が原因であることがわかります。
88195e922ccf8ba90d3fece17db35102
浮動小数点計算に関する上記の説明の後、これは不正確な浮動小数点計算結果によって引き起こされることがわかったので、round( ) 関数 それを処理するだけです:
6e9b6e31e092c6cf9e5ddca59ba9f1b6
虽然 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[];