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のほとんどの関数は、成熟した状態では不変です。つまり、渡された引数を変更しません。これにはいくつかの利点があり、そのうちの1つは、副作用なしに式で戻り値を使用できることです。

これは、単一の引数を取る関数の可変動作を模倣するために使用できる一般的なラッパーです。

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 に答える