4
class something{   
    public function add_val( $val ){
    $array = array();
    foreach( $val as $value ) {
        $array[] = static::$post[${$value}];
    }
    return $array;
    }
    pulblic function somethingelse(){
       .... 
       ....
       $optionsArray['value'] = array_map( 'add_val', array_chunk( $drop_val, count( $optionsArray['heading_x'] ) ) );
       ....
       ....
    }
}

how can i call the add_val method within the other using array_map()??

1 Answer 1

13

Use an array that contains the object, and the method name:

$optionsArray['value'] = array_map(array($this, 'add_val'), array_chunk($drop_val, count($optionsArray['heading_x'])));

You do the same for most other functions that take in callbacks as parameters, like array_walk(), call_user_func(), call_user_func_array(), and so on.

How does it work? Well, if you pass an array to the callback parameter, PHP does something similar to this (for array_map()):

if (is_array($callback)) {         // array($this, 'add_val')
    if (is_object($callback[0])) {
        $object = $callback[0];    // The object ($this)
        $method = $callback[1];    // The object method name ('add_val')

        foreach ($array as &$v) {
            // This is how you call a variable object method in PHP
            // You end up doing something like $this->add_val($v);
            $v = $object->$method($v);
        }
    }
}

// ...

return $array;

Here you can see that PHP just loops through your array, calling the method on each value. Nothing complicated to it; again just basic object-oriented code.

This may or may not be how PHP does it internally, but conceptually it's the same.

6
  • how can you pass a variable other than the one from the array? array($this, 'add_val($p)') Commented Jan 22, 2011 at 12:19
  • @Phil: $this->add_val($p), goes back to basic PHP OOP. Commented Jan 22, 2011 at 12:20
  • im not sure whats goin on here. What does the first peramiter in the array_map do? Commented Jan 22, 2011 at 12:29
  • 1
    @Phil: See if my explanation helps. Commented Jan 22, 2011 at 12:37
  • thats a cracking explination. Thanks alot Commented Jan 22, 2011 at 13:48

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.