Blogger Information
Blog 3
fans 0
comment 0
visits 1776
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
变量类型的查询、检测、转换、作用域(重点)——2018年4月13日17时23分
時節的博客
Original
628 people have browsed it

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

    分为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

Correction status:qualified

Teacher's comments:
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post