php之可变变量的实例详解


Posted in PHP onSeptember 12, 2017

php之可变变量的实例详解

前言:

最近在技术博客网站上偶然间浏览到一个新名词:"php的可变变量";然后就在网上查了下了解下,觉得用的还挺方便的,下面都是从网上代码copy到我本地环境运行后算是"拿来主义!"

php手册上这样说:

有时候使用可变变量名是很方便的。就是说,一个变量的变量名可以动态的设置和使用。一个普通的变量通过声明来设置,例如:

$a = 'hello';
$$a = 'world';
echo "$a ${$a}";
echo "$a $hello";

它们都会输出:hello world。

要将可变变量用于数组,必须解决一个模棱两可的问题。这就是当写下 $$a[1] 时,解析器需要知道是想要 $a[1] 作为一个变量呢,还是想要$$a 作为一个变量并取出该变量中索引为 [1] 的值。解决此问题的语法是,对第一种情况用 ${$a[1]},对第二种情况用 ${$a}[1]。

类的属性也可以通过可变属性名来访问。可变属性名将在该调用所处的范围内被解析。例如,对于 $foo->$bar 表达式,则会在本地范围来解析$bar 并且其值将被用于 $foo 的属性名。对于 $bar 是数组单元时也是一样。也可使用花括号来给属性名清晰定界。

看到这里还是云里雾里的,再看,在日常html的<form ...>POST过来很多变量需要处理的,一般的我们会这样处理:

$id    = $_POST['id'];
$name = $_POST['name'];
$sex   = $_POST['sex'];
echo "<p>Your order is as follows:</p>";
echo "<br />\$id=".$id;
echo "<br />\$name=".$name;
echo "<br />\$sex=".$sex;

但是现在问题来了,如果POST过来很多变量我们岂不累死啦!那现在可变变量的用处来啦,我们这样写:

$array = array();
foreach ($_POST as $key => $value) {
  $array[$$key] = $value;
}
echo '<pre>'; // 换行
print_r($array);
// 是不是很方便的呢!!

再来一个例子:

有class A和class B以及class C,他们都有自己的函数还是前端传值,这次是两个一个class,一个function同样的

$class=$_GET['class'];
$func=$_GET['func'];
$obj=new $class();
$obj->$func();

这是做单入口模式的思路!

如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

PHP 相关文章推荐
模拟OICQ的实现思路和核心程序(一)
Oct 09 PHP
用PHP和ACCESS写聊天室(六)
Oct 09 PHP
PHP完整的日历类(CLASS)
Nov 27 PHP
PHP音乐采集(部分代码)
Feb 14 PHP
PHP 程序员的调试技术小结
Nov 15 PHP
php url地址栏传中文乱码解决方法集合
Jun 25 PHP
基于PHP文件操作的详解
Jun 05 PHP
php中利用str_pad函数生成数字递增形式的产品编号
Sep 30 PHP
php操纵mysqli数据库的实现方法
Sep 18 PHP
php获得刚插入数据的id 的几种方法总结
May 31 PHP
微信公众号实现扫码获取微信用户信息(网页授权)
Apr 09 PHP
php抽象方法和普通方法的区别点总结
Oct 13 PHP
PHP清除缓存的几种方法总结
Sep 12 #PHP
PHP 传输会话curl函数的实例详解
Sep 12 #PHP
基于ThinkPHP5.0实现图片上传插件
Sep 25 #PHP
Laravel中encrypt和decrypt的实现方法
Sep 24 #PHP
php安装扩展mysqli的实现步骤及报错解决办法
Sep 23 #PHP
php mysql PDO 查询操作的实例详解
Sep 23 #PHP
PHP实现权限管理功能示例
Sep 22 #PHP
You might like
PHP中ini_set与ini_get用法实例
2014/11/04 PHP
PHP下载远程图片并保存到本地方法总结
2016/01/22 PHP
PHP简单操作MongoDB的方法(安装及增删改查)
2016/05/26 PHP
PHP中的密码加密的解决方案总结
2016/10/26 PHP
通过DOM脚本去设置样式信息
2010/09/19 Javascript
JS完成代码前最好对其做5件事
2013/04/07 Javascript
JS实现图片翻书效果示例代码
2013/09/09 Javascript
js 获取浏览器版本以此来调整CSS的样式
2014/06/03 Javascript
jquery实现滑屏大图定时收缩为小banner图片的广告代码
2015/09/02 Javascript
基于Bootstrap的UI扩展 StyleBootstrap
2016/06/17 Javascript
AngularJS基础 ng-repeat 指令简单示例
2016/08/03 Javascript
VUE实现一个分页组件的示例
2017/09/13 Javascript
JavaScript实现读取与输出XML文件数据的方法示例
2018/06/05 Javascript
layui实现数据分页功能
2019/07/27 Javascript
解决jquery validate 验证不通过后验证正确的信息仍残留在label上的方法
2019/08/27 jQuery
jQuery单页面文字搜索插件jquery.fullsearch.js的使用方法
2020/02/04 jQuery
[55:16]Mski vs VGJ.S Supermajor小组赛C组 BO3 第二场 6.3
2018/06/04 DOTA
利用打码兔和超人打码自封装的打码类分享
2014/03/16 Python
Python中用于转换字母为小写的lower()方法使用简介
2015/05/19 Python
Django返回json数据用法示例
2016/09/18 Python
Django 导出 Excel 代码的实例详解
2017/08/11 Python
Python 查找list中的某个元素的所有的下标方法
2018/06/27 Python
Django+Xadmin构建项目的方法步骤
2019/03/06 Python
Python实现代码统计工具
2019/09/19 Python
Python使用Pandas读写Excel实例解析
2019/11/19 Python
对pytorch的函数中的group参数的作用介绍
2020/02/18 Python
python实现梯度法 python最速下降法
2020/03/24 Python
Django视图类型总结
2021/02/17 Python
英国空调、除湿机和通风设备排名第一:Air Con Centre
2019/02/25 全球购物
中学生英语演讲稿
2014/04/26 职场文书
标准毕业生自荐信
2014/06/24 职场文书
试用期员工工作自我评价
2014/09/10 职场文书
PyTorch 如何自动计算梯度
2021/05/23 Python
一劳永逸彻底解决pip install慢的办法
2021/05/24 Python
python 实现两个变量值进行交换的n种操作
2021/06/02 Python
CSS+HTML 实现顶部导航栏功能
2021/08/30 HTML / CSS