PHPデータ型の自動変換と強制...LOGIN

PHPデータ型の自動変換と強制変換

PHP は、PHP 5.x 段階では完全に型付けが弱いプログラミング言語です。いわゆる弱い型とは、変数を宣言するときに変数の型を指定する必要がないことを意味します。整数変数を宣言したいのですが、前に型を書いてから変数を書く必要はありません。

そして PHP 7 のパフォーマンスは大幅に向上しました。実際のテスト結果によると、PHP 7 のパフォーマンスは PHP5.6 と比較して 200% 近く向上しました。 PHP 7 のいくつかの場所では、型の指定を強制したり、型の指定を強制せずに変数を宣言したりできます。

次に、強制型変換と自動型変換について説明しましょう。

【暗黙レベル】ブール値の自動型変換と強制型変換の英単語

ブール値の自動型変換

自動型変換とは、特定の状況下でデータ型が自動的に別のものに変更されることを意味します. タイプは操作に参加します。自動型変換は、演算や判定の際に特定の値が自動的に変換される場合に発生します。

次の状況は、ブール値を判断する際の自動型変換です:

整数型の場合は 1, 0 が false で、他のすべての整数値は true です

浮動小数点の場合は 2, 0.0、ブール値は false です。小数点の後にゼロ以外の値がある限り、これは true です。

3. 空の文字列は、スペースが含まれている限り true とみなされます。

4 (文字列内の 0) も false として扱われます。それ以外はすべて true

5 であり、値が存在する限り空の配列も false とみなされます。

6. 空であることも false です。

7. 成功したと宣言されていないリソースも false です。

上記の原則を 1 つずつ試して結果を確認します。整数型の場合は

1、0 は false、その他の整数値はすべて true

<?php
//整型的0,换成整型的其他值试试
$bool = 0;
if($bool){
   echo '美女美女我爱你';
}else{
   echo '凤姐凤姐爱死我,执行假区间咯';
}
?>

2、浮動小数点の場合は 0.0、ブール値は false。小数点の後にゼロ以外の値がある限り、これは true です。

<?php
//浮点类型的的0,换成其他值试试
$bool = 0.0;
if($bool){
   echo '美女美女我爱你';
}else{
   echo '凤姐凤姐爱死我,执行假区间咯';
}
?>

3、空の文字列は false ですが、その中にスペースがある限り、true とみなされます。

<?php
//空字符串,中间没有空格哟。实验完加个空格试试
$str = '';
if($str){
    echo '美女美女我爱你';
}else{
    echo '凤姐凤姐爱死我,执行假区间咯';
}
?>

4、文字列内の 0 も false として扱われます。それ以外はすべて true

<?php
//0这个字符串哟,试试其他值看看
$str = '0';
if($str){
    echo '美女美女我爱你';
}else{
    echo '凤姐凤姐爱死我,执行假区间咯';
}
?>

5. 値が存在する限り、空の配列も false とみなされます。

<?php
//这个数组当中啥也没放
$arr = array();
if($arr){
    echo '美女美女我爱你';
}else{
    echo '凤姐凤姐爱死我,执行假区间咯';
}
?>

6、空も偽です

<?php
//声明了一个空的变量$bool
$bool = null;
if($bool){
    echo '美女美女我爱你';
}else{
    echo '凤姐凤姐爱死我,执行假区间咯';
}
?>

7、成功が宣言されていないリソースも偽です

<?php
//下面这段代码会显示警告,可忽略。暂时只需要对着实验知道效果即可:未声成功的资源也为假
//下面这一块了解意思就行:打开adasfasfasfdsa.txt这个不存在的文件
$res = fopen('adasfasfasfdsa.txt','r');
if($res){
    echo '美女美女我爱你';
}else{
    echo '凤姐凤姐爱死我,执行假区间咯';
}
?>

他の種類の自動型変換

自動型変換も可能です動作中に発生する。これは、私たちが要約するすべてのルールや意見と同じです。まず要約し、次に実験します。

スカラーのみが、操作中に次の自動型変換を生成します:

2015-07-28_55b79dcad98de.png

<?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 になります。対応する型に変換して操作に参加します

強制型変換

強制型変換には 3 つの方法があります:

1. 次の 3 つの関数、intval()、floatval を使用して型変換を完了します。 (), strval()

2.変数の前に()を追加して型を書き、変換して他の変数に代入します

3.settype(変数,型)で変数そのものを直接変更してみます

実験してみましょう:
intval(), floatval() , strval() 変換

<?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);
   //其他的操作方式,按照文字总结的规律你来试试
?>

settype(variable, type) 数量自体を直接変更します

<?php
    //定义浮点变为整型
    $fo = 250.18;
   //settype第二个参数是int,你实验的时候要记得第二个参数要为字符串类型
    settype($fo,'int');
    //输出看看结果
    var_dump($fo);
?>

【試してみます】 以下は強制型変換の特徴であり、それが正しいかどうかを確認することができます:

1.アイドリングを整数に変換すると整数0になります

2. アイドリングを浮動小数点数に変換した場合 点は浮動小数点0になります

3. 空の点を文字列に変換した場合は となります空の文字列 ''

4. 浮動小数点 123.0 は文字列に変換され、文字列 123

5. 浮動小数点 123.2 は文字に変換され、文字列は文字列の 123.2 になります

6. 浮動小数点の小数点がどんなに大きくても、小数点は削除され、小数点以下の値は破棄されます

7. 文字列を整数に変換する場合、値が前にある場合は、以前の値を取得し、それを整数変換値として使用します。

8.settype(variable,'null'); 変数​​の unset() と同等

9.$ターゲット変数 = (type)$ 操作変数は、元の変数の型ではなく、ターゲット変数の型を変更するだけです変数、Settype は元の値を変更するものです

<?php
      //小可爱,记得自己做实验,验证上面的9点哟
    $t=12.9;
    settype($t,'int');
    var_dump($t);
?>


set 発音: [sɛt]

説明: Set

type 発音: [taɪp]

説明: 型、メソッド


次のセクション

<?php //浮点类型的的0,换成其他值试试 $bool = 0.0; if($bool){ echo '美女美女我爱你'; }else{ echo '凤姐凤姐爱死我,执行假区间咯'; } ?>
コースウェア