Can a method be used as an array_map function

前端 未结 3 622
遥遥无期
遥遥无期 2020-12-13 01:47

I want to do something like this:

class Cls {
  function fun($php) {
    return \'The rain in Spain.\';
  }
}

$ar = array(1,2,3);
$instance = new Cls();
print_r(         


        
相关标签:
3条回答
  • 2020-12-13 01:54

    Yes, you can have callbacks to methods, like this:

    array_map(array($instance, 'fun'), $ar)
    

    see the callback type in PHP's manual for more info

    0 讨论(0)
  • 2020-12-13 02:06

    Actually, you need to know the definition of Callback, please kindly refer to the following code:

    <?php 
    
    // An example callback function
    function my_callback_function() {
        echo 'hello world!';
    }
    
    // An example callback method
    class MyClass {
        static function myCallbackMethod() {
            echo 'Hello World!';
        }
    }
    
    $myArray = [1, 2, 3, 4];
    
    // Type 1: Simple callback
    array_map('my_callback_function', $myArray); 
    
    // Type 2: Static class method call
    array_map(array('MyClass', 'myCallbackMethod'), $myArray); 
    
    // Type 3: Object method call
    $obj = new MyClass();
    array_map(array($obj, 'myCallbackMethod'), $myArray);
    
    // Type 4: Static class method call (As of PHP 5.2.3)
    array_map('MyClass::myCallbackMethod', $myArray);
    
    // Type 5: Relative static class method call (As of PHP 5.3.0)
    class A {
        public static function who() {
            echo "A\n";
        }
    }
    
    class B extends A {
        public static function who() {
            echo "B\n";
        }
    }
    
    array_map(array('B', 'parent::who'), $myArray); // A
    ?>
    

    From: http://php.net/manual/en/language.types.callable.php

    0 讨论(0)
  • 2020-12-13 02:12

    You can also use

    array_map('Class::method', $array) 
    

    syntax.

    0 讨论(0)
提交回复
热议问题