PHP经典实例读书笔记 (变量)

PHP经典实例(php cookbook)读书笔记 (0x05)

0x05变量


empty()和isset()

empty()会告诉你一个值是否为空。
isset()会告诉你一个值是否设置。

空的定义
- integer ->0
- double ->0.0
- string->”“(空串)
- string->”0”(这个要注意字符串”0”也为空)
- boolean->false
- 数组->array()
- null
- 对象

empty()在5.5以前只允许传入参数,5.5以后可以传入表达式,
所以empty也可以用于检查函数返回是否为空。

5.0以前无属性的对象也为空。

  -----------------------

默认值的设置

通常使用三元运算符+isset();

    $val = isset($_GET['car']) ? $_GET['car'] : "default" ;

如果使用empty会把 0,“0”,false等合法的输入覆盖掉
使用isset时 ,只有值为null时也会被覆盖(也就是值未设置时);
特殊情况下可以考虑使用array_key_exists($keyname,$array[]);


不使用临时变量交换变量值

list( a, b) = array( b, a);


动态创建变量

    $s = "name";
    $$s = 111;
    echo $name ;// 111

当变量名由函数等组成的表达式计算出来时,把表达式使用大括号括起来。

    ${find_this_name()} = 111;

跨域变量(全局变量)(静态变量)

你懂的,使用static
只在脚本执行到结束有效。


进程间共享变量

  1. 使用APC扩展。
  2. 使用shmop, System V存入内存。(windows上不可以使用System V)
  3. 使用文件,数据库保存。

复杂结构数据在url上传递

当一个复杂结构的数据要经过url进行传递的时候,可以使用下列两个方法,将数据存入单一变量。

  1. json_encode(), json_decode()
  2. serialze(),unserialze()

1.使用json 解码时开销会比serialze大,但是方便与js交互;
2.json_encode()的第二个参数为true时,会生成关联数值,如果没有生成一个stdClass对象
3.在url上使用serialize的数据要加上urlencode(),确保其url的元字符转义;


var_export(), var_dump(), printf_r();

  1. printf_f()只输出层级结构和值
  2. var_dump()还输出了各个变量的类型
  3. var_export()输出的是可以执行的数组代码

对于数组中引用类型 print_f(),和var_dump(),当第二次看到这个引用的对象时会输出RECURSION,var_export()则输出null;

当他们第二个参数为true时,会返回打印的信息而不打印

这时var_export()可以用来写配置文件

    $content = "<?php \n return ".var_export($config);   
    file_put_contents('config.php', $content);

读取时

    $config =  require('config.php');

var_dump的返回值需要使用输出缓冲

    ob_start();
    var_dump($user);
    $dump = ob_get_content();
    ob_end_clean();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值