博客列表 >变量类型的查询、检测、转换、作用域(重点)——2018年4月13日17时23分

变量类型的查询、检测、转换、作用域(重点)——2018年4月13日17时23分

時節的博客
時節的博客原创
2018年04月13日 17:43:34632浏览

一、定义:变量是用于存储信息的"容器"。

    分为3大类:

  1. 标量:单值变量。包括整数int、浮点float、字符串string、布尔boolean

  2. 复合类型:多值。数组 array []、对象object

  3. 特殊类型:null resource

echo $age = 28;
echo $salary = 3.14;
echo $name = '時節';
echo $isMarried = true;
// 标量输出方式:1 echo 2 print 3 var_dump();
// 复合类型输出方式:1 print_r 2 var_dump()
// 特殊类型输出举例
$file = fopen('demo1.php', 'r') or die('打开失败');//资源句柄
echo fread($file, filesize('demo1.php'));
fclose($file);
echo $x;
$num = null; var_dump(is_null($num));

二、变量类型检测

  1. 类型查询gettype($var)

  2. 类型检测is_type($var):有一个is_numeric() 是用来检测数字或者数字字符串的

三、类型转换

1.强制转换 (int)$var; (string)$var等;

2.临时转换(值变类型不变)intval(); floatval(); strval(); 

3.永久转换settype($var, 类型标识符)

$price = 123.56;
echo gettype($price);
echo (int)$price;
echo (string)$price;
echo gettype($price);
echo $price;
settype($price, 'int');
echo gettype($price);
echo $price;

四、变量的检测

1.is_null(var) 什么时候返回true

未初始化(已经声明没有赋值)默认就是null;

直接赋值null $name = null;

unset($name),被注销时当前$name为null

$name1;
$name2 = null;
$name3 = 'PHP';
unset($name3);
@var_dump(is_null($name1) ? true : flase);
@var_dump(is_null($name2) ? true : flase);
@var_dump(is_null($name3) ? true : flase);

4.1.png

2.empty(var)什么时候返回true

空字符串,空数组

null

 0 '0' false

用户注册检测是否输入内容:文本框value值默认是‘’,如果用is_null检查。返回false有值,证明有输入,这显然不对

$str1 = '';
$str2 = [];
$str3 = 0;
$str4 = '0';
$str5 = null;
$str6 = false;
@var_dump(empty($str1) ? true : flase);
@var_dump(empty($str2) ? true : flase);
@var_dump(empty($str3) ? true : flase);
@var_dump(empty($str4) ? true : flase);
@var_dump(empty($str5) ? true : flase);
@var_dump(empty($str6) ? true : flase);
echo '<hr/>';

4.2.png

3.isset(var) null的相反操作。变量存在且不为null——这个实际比较常用

$domain = "中文网";
$name = null;      
$job;
var_dump(isset($domain));
var_dump(isset($name));	
var_dump(isset($job));	
/医院
 * 总结
 * 变量有2中状态:声明,未声明
 * 声明后2种状态:赋值,未赋值
 * 赋值后3中状态:null,空,非空
 * 对于未声明的检测isset
 * 已声明的 为空用 empty,是否初始化了用is_null
 */

4.3.png

注意2个区别

var_dump(isset($aaaa));	//未定义的
@var_dump(is_null($aaaa));	//根本没定义,但是默认null——true

4.4.png

4.作用域

1.全局变量:函数外创建

2.局部变量:函数内创建

3.静态变量:函数内创建,仅在函数中使用

实例

<?php 
header("Content-type: text/html; charset=utf-8");


$sitename = '中文网';//全局
function hello(){
	$username = '時節';//局部
	// 函数内使用全局变量
	global $sitename;
	//在创建变量时,php自动把变量放入全局数组$GLOBALS[]。所以也可以这样在函数内使用
	// return '我是'.$username.'我喜欢'.$sitename;
	return '我是'.$username.'我喜欢'.$GLOBALS['sitename'];
}
echo hello()."<hr/>";
// 静态变量:函数内创建,仅在函数中使用
function myStatic(){
	static $num = 1;//只有在第一次执行赋值,其余情况不赋值了
	return '第'.$num.'次输出'.$num++.'<br/>';
}
echo myStatic();
echo myStatic();
echo myStatic();
echo myStatic();
//超级全局变量:系统自动创建,但不是跨脚本,$_SERVER,  $_SESSION, $_REQUEST($_COOKE + $_GET + $_POST)
//朱老师————不对啊~不是啊~不对啊~不是啊~
?>

运行实例 »

点击 "运行实例" 按钮查看在线实例

手写作业。实在没有语言组织理解了

IMG_20180413_181817.jpg

IMG_20180413_182755.jpg

声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议