PHP中extract() array_map call_user_func compact

简介:

近日在看一个牛人的代码时,看到一个非常好用的函数:extract(),它的主要作用是将数组展开,键名作为变量名,元素值为变量值,可以说为数组的操作 提供了另外一个方便的工具,比方说,可以很方便的提取$_POST或者$_GET的元素,对表单提交上来的内容不能不用一一赋值,直接使用下面代码:

edit.html

Java代码   收藏代码
  1. <form method="post" name="myform" id="myform">  
  2.     <table cellpadding="2" cellspacing="1" class="table_form" width="100%">  
  3.         <tr>  
  4.             <th width="100"><?php echo L('serviceurl') ?>:</th>  
  5.             <td><input type="text" name="openservice[serviceurl]" value="<?php echo $serviceurl; ?>"></td>  
  6.         </tr>  
  7.   
  8.         <tr>  
  9.             <th width="100"><?php echo L('servicename') ?>:</th>  
  10.             <td><input type="text" name="openservice[servicename]" value="<?php echo $servicename; ?>"></td>  
  11.         </tr>  
  12.         <input type="submit" name="dosubmit" id="dosubmit" value=" <?php echo L('submit') ?> ">  
  13.     </table>  
  14. </form>   

在action.php中只要使用extract()函数将$_POST['openservice']全局数据解开:

action.php

Java代码   收藏代码
  1. <?php  
  2. //保存时,需要的内容用$_POST['openservice'],不需要保存的用$_POST['info']  
  3. $_POST['openservice'] = array_map('trim', $_POST['openservice']);  
  4. $this->db->insert($_POST['openservice']);  
  5.   
  6. //回显修改  
  7. extract($_POST['openservice']);  
  8. //相当于$username = $_POST['openservice']['username'];  
  9. //$password = $_POST['openservice']['password'];  
  10. ?>  

 数据库查询代理

Java代码   收藏代码
  1. <?php  
  2. class Brand   
  3. {  
  4.     public function insert($data){  
  5.     }  
  6.   
  7.     public static function update($data, $where = ""){  
  8.     }  
  9.   
  10.     public function delete($id){  
  11.     }  
  12.   
  13. //重写机器人:Brand::robot(array('method'=>'save','params'=>array('data'=>'someData')) );  
  14.     public static function robot(array $settings)  
  15.     {  
  16.         $data = array();  
  17.         $obj = new self();  
  18.         extract($settings['params']);  
  19.         switch ($settings['method']) {  
  20.             case 'save':  
  21.                 $data = $obj->insert($data);  
  22.                 break;  
  23.   
  24.             case 'update':  
  25.                 $data = $obj->update($data, $where);  
  26.                 break;  
  27.             default:  
  28.                 break;  
  29.         }  
  30.         return $data;  
  31.     }  

 以上代码用系统自带方法也可以实现

Java代码   收藏代码
  1. //use for static method  
  2. call_user_func_array(array("Brand""update"), array($data, $where));   
  3. call_user_func(array("Brand""update"), $data, $where);  
  4. // or    
  5. $obj = new Brand;  
  6. call_user_func(array($obj, "update"), $data, $where)  

compact是extract的反向的

Java代码   收藏代码
  1. <?php  
  2. $firstname = "Peter";  
  3. $lastname = "Griffin";  
  4. $age = "38";  
  5.   
  6. $result = compact("firstname""lastname""age");  
  7. print_r($result);  
  8. //Array  
  9. //(  
  10. //[firstname] => Peter  
  11. //[lastname] => Griffin  
  12. //[age] => 38  
  13. //)  
  14. ?>  
 
相关文章
PHP:compact函数使用示例
PHP:compact函数使用示例
|
PHP 前端开发 关系型数据库
php中的extract函数
extract函数用来将一个数字分解成多个变量直接使用,下面是W3C的解释:PHP extract() 函数从数组中把变量导入到当前的符号表中。对于数组中的每个元素,键名用于变量名,键值用于变量值。第二个参数 type 用于指定当某个变量已经存在,而数组中又有同名元素时,extract() 函数如何对待这样的冲突。
894 0
|
7月前
|
关系型数据库 MySQL PHP
PHP 原生操作 Mysql
PHP 原生操作 Mysql
81 0
|
7月前
|
关系型数据库 MySQL 数据库连接
PHP 原生连接 Mysql
PHP 原生连接 Mysql
107 0
|
7月前
|
关系型数据库 MySQL Unix
PHP MySql 安装与连接
PHP MySql 安装与连接
130 0
|
3月前
|
关系型数据库 MySQL PHP
|
10天前
|
PHP
web简易开发——通过php与HTML+css+mysql实现用户的登录,注册
web简易开发——通过php与HTML+css+mysql实现用户的登录,注册
|
7月前
|
关系型数据库 MySQL 数据库连接
PHP 原生操作 Mysql 增删改查案例
PHP 原生操作 Mysql 增删改查案例
87 0
|
2月前
|
监控 关系型数据库 MySQL
PHP与MySQL的结合:实现局域网上网行为监控软件的数据库管理
在当今信息化时代,网络安全日益成为重要的话题。为了有效监控和管理局域网上网行为,开发一个基于PHP和MySQL的数据库管理系统是一个理想的选择。本文将介绍如何结合PHP和MySQL,开发一款简单而高效的局域网上网行为监控软件,并重点关注数据库管理方面的实现。
196 0
|
8月前
|
运维 关系型数据库 MySQL
【运维知识进阶篇】集群架构-Nginx实现基础web架构(Linux+Nginx+PHP+Mysql)(二)
【运维知识进阶篇】集群架构-Nginx实现基础web架构(Linux+Nginx+PHP+Mysql)(二)
202 0