PHP 学习之路:第十九天——PHP常量与变量

511 阅读2分钟

一、 php 打印输出

  1. echo '显示' 输出内容到浏览器
echo "hello";
  1. print '打印' 有返回值 1,可用于三元运算符
$res=print "hello";  // hello
echo $res; // 1
  1. var_dump() 返回变量的完整信息
$tel = 15845454454;
var_dump($tel); //int(15845454454)
var_dump('125425'); //string(6) "125425"

$arr = [1,2,'hello',5,4];
var_dump($arr);
  1. print_r() var_export(),第二个参数设置为true 可以将变量的信息转换成一个字符串 不输出到浏览器 用于线上调试,sql日志记录
$arr = [1,2,'hello',5,4];
$res = print_r($arr,true);
file_put_contents('log.txt','调错信息:'.$res);

$res1 = var_export($arr,true);
file_put_contents('log1.txt','调错信息:'.$res1);

二、php 数据类型

  • 8种变量类型
  • 4标量类型
//标量类型: int,float,bool,string
$int = 22;
$float = 52.25;
$bool = true;
$str = 'hello uniapp';
  • 2复合类型(array, object)
  • 2特殊类型(resource, null)
// 1. resource 资源类型:保存到外部资源的一个引用  
// fopen()
 $handle = fopen('log.txt','w');
var_dump($handle);//resource(3) of type (stream) 3是资源类型id  stream 资源类型

// imagecreate()
$image_handle = imagecreate(100,50);
var_dump($image_handle);//resource(4) of type (gd)

// 2. null 
// 1) 表示一个变量没有值,空 
// 2) 不表示空格,不表示零,也不表示空字符串 
// 3) 不区分大小写,NULL
$int = null;
var_dump($int);//NULL 

$username = 'chloe';
unset($username);
// @ 为"错误抑制符"
@var_dump($username);
// php是弱类型语言,变量的类型随值的变化而变化

三、php 变量类型转换

转换方式函数
临时转换(int),(string),(array),(object)...
自动转换根据操作符对操作数的类型要求进行
强制转换settype()
//1. 临时转换
$uid = 25;
var_dump($uid,(string)$uid,(float)$uid);// int(25) string(2) "25" float(25)

// 2. 系统自动转换
// 1) "+","-" 要求参与计算的数据都是数值类型,如果不是,就是会触发自动转换
$foo = '100pages';
@$foo += 200;
var_dump($foo);// int(300)

$foo += 12.3;
var_dump($foo);// float(312.3)

@$res = null + '10 kg rice';
var_dump($res);// int(10)

// 2) . 字符串拼接符
echo 'how are you' . 100 . '<br>';

// 3) 布尔类型转换
@var_dump($email);//null

//null===>false  
if(!@$email)
{
    echo 'email不存在';
}

/**
 * 以上类型转换都无法改变被转换变量本身的类型, 
 * 而是通过转换, 将得到的新类型的数据赋给了新的变量, 
 * 原变量的类型与值保持不变
 */
 
$p = $_GET["page"];
echo gettype($p);// string
// 3.类型永久转换   
settype($p,'integer');
echo gettype($p);// integer

四、类型检测

转换方式函数
标量is_int(),is_string(),is_bool()...
复合is_array(),is_object()
特殊is_null(),is_resource()

五、变量

变量: 就是代码中需要暂存的数据载体, 可以复用 按名访问

变量的命名 : 合法标志符

  1. 仅允许字母a-z,A-Z,数字,下划线 _
  2. 禁止以数字开头
  3. php系统预定义的保留字, 关键字 不能作为变量的名称, this class function public static private
  4. 望文生义 $username $password $email
  5. 变量严格区分大小写, 函数不区分大小写
  6. 多个单词组成的变量名 aaaBbbCcc getInfo $itemName $itemPrice
$var = 'hello';
$VAR = true;
var_dump($var,$VAR);// string(5) "hello" bool(true)
VAR_DUMP($var,$VAR);// string(5) "hello" bool(true)

//  变量赋值
/**
 * 1. 传值赋值: 将源变量($a)的值复制出来一份新的值内存空间地址给另一个变量($b), 修改两个变量的值 互不影响
 */
$a = 45;
$b = $a;
printf('$a的值为%d,$b的值为%d<br>',$a,$b);// $a的值为45,$b的值为45

$a = 450;
printf('$a的值为%d,$b的值为%d<br>',$a,$b);// $a的值为450,$b的值为45


/**
 * 2. 引用赋值 &地址引用符
 * 新的变量$price2 引用/指向了原始变量, 互相影响, 没有复制操作,因而引用赋值更加快
 */

$price1 = 25;
$price2 = &$price1;
printf('$price1的值为%d,$price2的值为%d<br>',$price1,$price2);
// $price1的值为25,$price2的值为25
$price1 = 250;
printf('$price1的值为%d,$price2的值为%d<br>',$price1,$price2);
// $price1的值为250,$price2的值为250

$foo = 35;
$bar = &$foo;
unset($foo);//仅仅是将$foo,$bar互相取消关联
var_dump($bar);//int(35)

六、常量

  • define(): 函数
  • const: 关键字
  1. 固定的值(圆周率), 常量不能重新被定义或取消定义
  2. 常量的命名前不能加 $
  3. 常量推荐全部大写,多个单词之间用下划线连接
  4. 常量, 类, 接口,函数 全局成员, 变量不是全局成员 受作用域的限制

七、php 魔术常量

__LINE__ 
__DIR__
__FUNCTION__
__METHOD__
__NAMESPACE__