Correcting teacher:天蓬老师
Correction status:qualified
Teacher's comments:
<?php
echo "数据类型:<br>";
// PHP的数据类型转换属于强制转换,允许转换的PHP数据类型有(int)、(integer):转换成整形
// (float)、(double)、(real):转换成浮点型
// (string):转换成字符串
// (bool)、(boolean):转换成布尔类型
// (array):转换成数组
// (object):转换成对象
$abc=123;
$str=(string)$abc;
echo '<pre>数值123转换成字符串:',$str,"=>".gettype($str),"</pre>";
echo '<pre>字符串转"369string"换成数值:',(int)'369string',"</pre>";
var_dump((Array)100);
$ty=(Array)100;
print_r($ty);
echo "<hr>";
class demo{
var $name;
public function getvar(){
echo "ok";
}
function __toString()
{
return '类转化成字符串';
}
}
echo "数组转化:<br>";
$obj=new demo;
var_dump((Array)1,(array)'abcd',(Array)function(){},(array)$obj);
echo "<hr>";
//自动转化
echo '<pre>1+true=',1+true,"\t",gettype(1+true),'</pre>';
echo '<pre>1+"123string"=',1+(int)"123string","\t",'不手动转化,系统自动转化会警告','</pre>';
echo "<hr>";
//浮点型:
echo "<pre>";
$op=(double)123.1;
$op1=(float)123.1;
echo 'double与float竟让能=== =>';
echo $op===$op1;
echo "</pre>";
echo '<pre>浮点数转化成整数:取出最大数(在小于的整数中)(int)(100/3)=',(int)(100/3),'</pre>';
echo '<pre>浮点数转化成字符串',(string)123.698,'</pre>';
echo '<pre>浮点数转化成bool',(bool)123.3,'</pre>';
echo '<pre>浮点数转化成对象',((object)123.6)->scalar,'</pre>';
$f=(Array)123.3;
echo '<pre>浮点数转化成数组',print_r($f),'</pre>';
echo "<hr>";
//字符串:
echo <<< EOT
<pre>
字符串转"string369"换成数值:0;
</pre>
EOT;
echo '字符串转化成整形:',(int)'123a';
echo "<pre></pre>";
echo '字符串转化成布尔型:',(bool)'123a';
echo "<pre></pre>";
// 第二种转换方式:intval() floatval() strval()
//int intval ( mixed $var [, int $base = 10 ] ) $base依照转化的类型
echo intval('1123c');
echo "<pre></pre>";
// float floatval ( mixed $var ) $var:要转换的变量,不能是数组或对象。doubleval 是 floatval 的别名。
echo floatval('123456.09c');
echo "<pre></pre>";
// string strval ( mixed $var ) strval() 函数用于获取变量的字符串值。 $var: 可以是任何标量类型,但不能是数组或对象。
$int_str= 123.3;
var_dump($int_str);
$str = strval(123.3);
var_dump($str);
echo "<pre></pre>";
//bool settype ( mixed &$var , string $type )设置成功时返回 TRUE, 失败时返回 FALSE。$var: 要转换的变量。
$var=100;
echo settype($var,'boolean');
var_dump($var);
echo "<pre></pre>";
$var=100;
echo settype($var,'null');
var_dump($var);
效果:
答:
<?php
// is_numeric():检查参数是否是数值或数值型的字符串
function add($add1,$add2){
if(is_numeric($add1) and is_numeric($add2)){
printf("%d + %d = %d",$add1,$add2,$add1+$add2);
}
else{
echo "参数出错";
}
}
add(100.10,300.01);
echo "<pre></pre>";
// php7+: 参数类型检测,支持复合类型,也支持标量
function rewadd(float $a,float $b) : int
{
return ($a + $b);
}
echo rewadd(1,2);
echo "<pre></pre>";
// function rewadd1(int $a,int $b) : int
// {
// $c=$a + $b;
// return $c;
// }
// echo rewadd1(100,2);
echo "php7中 integer 不能做函数的参数 但是int可以";
echo "<hr>";
// is_scalar()//检查 是否为标量 注意判断NUll标量是一种基本数据类型。
echo '检查 是否为标量:';
echo "<pre>标量一定是基本数据类型</pre>";
echo gettype(1),'=>' ,1,'是',is_scalar(1)?'标量':'非标';
echo "<pre></pre>";
echo gettype('1aassd'),'=>' ,'1aassd','是',is_scalar('1aassd')?'标量':'非标';
echo "<pre></pre>";
echo gettype(null),'=>' ,null,'是',is_scalar(null)?'标量':'非标,null是特殊类型';
echo "<pre></pre>";
效果:
答:
<?php
// 1. 驼峰式: $itemPrice,变量,对象的属性和方法, getUser()
// 2. 蛇形: set_public(),函数
// 3. 帕斯卡(大驼峰): UserModel, 类,与驼峰式很像
// 常量 :全大写(非强制)
//变量有两部分构成:$+变量名(字母,数字,下划线构成,数字不能开头)
$st=123;
var_dump($st);
echo "<br>";
$st='123';
var_dump($st);
echo "<br>";
$st=[];
var_dump($st);
echo "<br>";
echo "php中变量类型可以随时改变";
echo "<br>";
$a=$b=123;
$b=null;
echo $a;
echo "<br>";
//引用赋值:
$c=100;
$d=&$c;#//引用赋值
echo $d;
echo "<br>";
$c=10;
echo $d;
echo "<br>";
unset($c);
echo $d;
echo "<hr>";
echo "动态变量";
echo "<br>";
$abc='hello';
$$abc='hello,我是动态变量,命名必须要符合变量的命名规则';
echo $$abc;
echo "<br>";
echo $hello,',相当于定义新变量';
echo "<hr>";
//define函数 value 必须是标量( int、 float、string、boolean、null)在 PHP 7 中还允许是个 array 的值。
define('HELLO', '外国话');
echo HELLO;
echo "<br>";
echo defined('HELLO')?'常量已定义':'常量未定义';
echo "<br>";
//关键字
const ANME = 'china';
echo ANME;
echo "<br>";
echo defined('ANME')?'常量已定义':'常量未定义';
echo "<br>";
// 程序执行有二个阶段: 编译, 运行
// 编译阶段就是静态分析,主要针对现在能看到的,或者能确定下值的东西
// 常量,常量,类声明
// const 运行在编译阶段
// define()在运行阶段才创建常量
// if(),function ()
const express=[1,2,3,4,5,6,7,8,9];
var_dump(express);
效果: