<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>变量</title>
</head>
<body>
<?php
date_default_timezone_set("Asia/Shanghai");
/**
* 获取指定类型变量值
* intval(): 获取变量的整数值
* floatval(): 获取变量的浮点值
* strval(): 获取变量的字符串值
* boolval(): 获取变量的布尔值
* gettype(): 获取变量的类型
* settype(): 设置变量类型,强制转换变量类型
*/
function demo() {
$var_int = 1;
$var_float = 1.23;
$var_str = 'abc';
$var_bool = true;
var_dump(intval($var_int));
var_dump(floatval($var_float));
var_dump(strval($var_str));
var_dump(boolval($var_bool));
// 获取变量类型
var_dump(gettype($var_int));
}
// demo();
/**
* 检测变量
* isset(): 检测变量是否设置,并且不是 NULL ,可以用来检测一个变量是否已被初始化
* empty(): 检查一个变量是否为空,当var存在,并且是一个非空非零的值时返回 FALSE,否则返回 TRUE
* is_string(): 检测变量是否是字符串
* is_int(): 检测变量是否是整数
* is_float(): 检测变量是否是浮点型
* is_bool(): 检测变量是否是布尔型
* is_array(): 检测变量是否是数组
* is_object(): 检测变量是否是一个对象
* is_null(): 检测变量是否为 NULL
* is_resource(): 检测变量是否为资源类型
* is_numeric(): 检测变量是否为数字或数字字符串
* is_scalar(): 检测变量是否是一个标量
* is_callable(): 检测参数是否为合法的可调用结构
*/
function demo2() {
// empty和isset的比较
$var = 0;
$var = NULL;
$arr = array(
'a' => 'A'
);
if (empty($var)) {
echo '$var is either 0, empty, or not set at all<br>'; //输出内容成功
}
if (isset($var)) {
echo '$var is set even though it is empty<br>';
}
if (isset($arr['a'])) {
echo 'success';
} else {
echo 'false';
}
}
// demo2();
/**
* 序列化和反序列化
* serialize()和unserialize()
* 作用:serialize()返回字符串,此字符串包含了表示value的字节流,可以存储于任何地方,这有利于存储或传递 PHP 的值,同时不丢失其类型和结构
* tips: serialize()可处理除了resource之外的任何类型。
*/
function demo3() {
$arr = array(
'a' => 'A',
'b' => 'B',
'c' => 'C'
);
$serialize_data = serialize($arr);
var_dump($serialize_data);
echo '<br>';
$unserialize_data = unserialize($serialize_data);
var_dump($unserialize_data);
}
// demo3();
/**
* 引用的使用
*/
function demo4() {
$foo = 'Bob' ; // 将 'Bob' 赋给 $foo
$bar = & $foo ; // 通过 $bar 引用 $foo
$bar = "My name is $bar " ; // 修改 $bar 变量
echo $bar ;
echo $foo ; // $foo 的值也被修改
}
// demo4();
/**
* 可变变量
* tips: 预定义变量单独介绍
*/
function demo5() {
$a = 'hello';
$$a = 'world!';
echo $hello.'<br>';
class Foo {
var $bar = 'I am bar.';
var $arr = array('I am A.', 'I am B.', 'I am C.');
var $r = 'I am r.';
}
$foo = new Foo();
$bar = 'bar';
$baz = array('foo', 'bar', 'baz', 'quux');
echo $foo->$bar.'<br>';
echo $foo->$baz[1].'<br>';
$start = 'b';
$end = 'ar';
echo $foo->{$start.$end}.'<br>';
$arr = 'arr';
echo $foo->{$arr[1]}.'<br>';
echo $foo->arr[1].'<br>';
echo $foo->{$arr}[1].'<br>';
}
// demo5();
/**
* 其他API
* get_defined_vars — 返回由所有已定义变量所组成的数组
* get_resource_type — 返回资源(resource)类型
* var_export — 输出或返回一个变量的字符串表示
* var_dump — 打印变量的相关信息
* unset — 释放给定的变量
* $_GET、$_POST、$_REQUEST、$HTTP_POST_VARS等可以获取外部变量
*/
?>
</body>
</html>