zoukankan      html  css  js  c++  java
  • 将对象转为数组方法:延伸array_map函数在PHP类中调用内部方法

        public static function objectToArray($d) {
                if (is_object($d)) {
                    $d = get_object_vars($d);
                }
    
                if (is_array($d)) {
                     //数组中的每个值都通过当前函数处理(如果是多维数组相当于递归),这里都是原样返回(return $d)
    return array_map(array(__CLASS__, __FUNCTION__), $d); } else { return $d; }     }

    array_map(array(__CLASS__, __FUNCTION__), $d)解释:

    我们可以在PHP手册中找到一段用户添加的说明:If you need to call a static method from array_map, this will NOT work:如果你想在array_map函数中回调一个静态方法,那么下面的做法是错误的)

    <?php
    $a = array(1, 2, 3, 4, 5);
    $b = array_map("myclass::myMethoed", $a);
    print_r($b);
    ?> 

    Instead, you need to do this:

    <?php
    $a = array(1, 2, 3, 4, 5);
    $b = array_map(array("myclass","myMethoed"), $a);
    print_r($b);
    ?> 

    这里有几点可以参考的:

    1,在PHP类中通过array_map函数回调内部方法时,类名称可以使用__CLASS__常量。我们强烈推荐使用此常量,因为不论你类如何修改,这能保证最终结果都是正确的。

    2,如果回调的方法是非静态类型,亦可通过$this伪变量指定。

    3,在PHP类中的array_map函数总是不能识别self伪变量。

  • 相关阅读:
    SQL Server中的sysobjects
    SQL:事务(1)
    继续探究HTML与CSS:图像映射
    SQL:事务(2)
    找工作?该复习了!(转)
    继续探究HTML与CSS:!important 和 @import 规则
    JAVA数据结构:二叉树
    SQL:Like 通配符及特殊用法Escape
    JavaScript高级程序设计:在HTML中使用JavaScript
    一个有趣的时钟
  • 原文地址:https://www.cnblogs.com/leezhxing/p/4025809.html
Copyright © 2011-2022 走看看