5

我必须这样做:

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

我想避免重复提及变量名。我试过了:

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

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

那没有用。这在PHP中可能吗?变量上调用函数?

4

4 回答 4

7

您可以创建自己的包装函数,通过引用获取变量:

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

然后调用:

html_dec($sourceElement['description']);
于 2012-12-15T22:36:00.317 回答
3

正确的解决方案是包含“冗余”变量提及。它更具可读性,而且这样的混乱程度要低得多。

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

不过,您的思维方式很好,您正在考虑如何缩短代码,就像真正的懒惰程序员一样 =)

于 2012-12-15T22:33:50.077 回答
2

这取决于功能。htmlspecialchars_decode()返回结果,它不会修改原始变量。你对此无能为力。

于 2012-12-15T22:34:18.463 回答
2

PHP 中的大多数函数在成熟时都是不可变的,即它们不会修改您传递给它们的参数。这有几个优点,其中之一是能够在没有副作用的表达式中使用它们的返回值。

这是一个通用包装器,您可以使用它来模拟任何采用单个参数的函数的可变行为:

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

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

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

里程可能会有所不同:)

于 2012-12-15T22:37:18.043 回答