0

I am coding a bot for a game and I am now coding the handlers I want to call my array so it runs the function.

$handlers = array(
    "x" => function()
);

function function($m)
{
    echo "Var: " . $m . "\n";
}

When I call handlers I tried it like this:

$handlers("x");

So how can I pass the variable to the function.

2
  • call_user_func($handlers['x'], $argument1, $argument2, ...) or call_user_func_array($handlers['x'], $argumentsArray) Commented May 10, 2015 at 14:24
  • When I run it it says "Warning: Missing argument for ..." Commented May 10, 2015 at 14:26

2 Answers 2

3

What you need is the call_user_func function. Besides, in your $handlers array, the name of the function must be in quotation marks and you can not use the reserved keyword function as the name of the function! and you may access the array element using [] operator:

$handlers = array(
    "x" => '_function'
);

function _function($m)
{
    echo "Var: " . $m . "\n";
}

call_user_func($handlers['x'], "hello :)");
Sign up to request clarification or add additional context in comments.

7 Comments

Thanks :), One more question how would I add to the array. array_push($handlers, 'y' => 'yFunction'); ?
@54.224.239.54 Your welcome :), To add to the array you may use $handlers['y']='yFunction';
Would this differ if it's in a class?
call_user_func() expects parameter 1 to be a valid callback, function 'joinRoom' not found or invalid function name :(
@54.224.239.54 For the case in which you have a method in a class then you may use call_user_func(array($classname, 'methodName'));.
|
0

For completeness, you can do it this way as well:

$handlers = array(
    "x" => 'test'
);

function test($m) {
    echo "Var: " . $m . "\n";
}

$handlers['x']("testing...");

2 Comments

By the way how would I add to the array. array_push($handlers, 'y' => 'yFunction'); ?
$handlers['y'] = 'whatever';

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.