Aditya M P
Aditya M P

Reputation: 5377

How to call a function on a variable in PHP?

I am having to do:

$sourceElement['description'] = htmlspecialchars_decode($sourceElement['description']);

I want to avoid that redundant mention of the variable name. I tried:

htmlspecialchars_decode(&$sourceElement['description']);

and

call_user_func('htmlspecialchars_decode', &$sourceElement['description']);

That did not work. Is this possible in PHP? Call a function on a variable?

Upvotes: 5

Views: 283

Answers (4)

Ja͢ck
Ja͢ck

Reputation: 173662

Most functions in PHP are immutable in mature, i.e. they don't modify the arguments you pass into them. This has a few advantages, one of them being able to use their return value in expressions without side effects.

Here's a generic wrapper you could use to mimic mutable behaviour for any function that takes a single argument:

function applyFn(&$s, $fn)
{
    return $s = $fn($s);
}

applyFn($sourceElement['description'], 'htmlspecialchars_decode');

applyFn($sourceElement['description'], 'trim'); // trim string

Mileage may vary :)

Upvotes: 2

ualinker
ualinker

Reputation: 745

It depends on function. htmlspecialchars_decode() returns the result, it doesn't modify the original variable. And you can do nothing about it.

Upvotes: 2

Niet the Dark Absol
Niet the Dark Absol

Reputation: 324820

You could create your own wrapper function that takes the variable by reference:

function html_dec(&$str) {$str = htmlspecialchars_decode($str);}

Then call:

html_dec($sourceElement['description']);

Upvotes: 7

Madara's Ghost
Madara's Ghost

Reputation: 175098

The correct solution would be to include that "redundant" variable mention. It's far more readable, and far less confusing that way.

$sourceElement['description'] = htmlspecialchars_decode($sourceElement['description']);

Your way of thinking is good though, you're thinking how to shorten your code, like a true lazy programmer =)

Upvotes: 3

Related Questions