0

私は参照演算子を使用しました & このように

$root=empty($root)?&$this->_item:&$parent;

例外をキャッチします:

Multiple annotations found at this line:

- syntax error, unexpected ':'
- syntax error, unexpected '&'

しかし、私はこのように書きました:

if (empty($root)) {
        $root = &$this->_item;
    } else {
        $root = &$parent;
    }

合格しました。理由を知りたいですか?

演算子の優先順位についてphpマニュアルを読みましたが、&は?:よりも高くなっています。

4

2 に答える 2

0

三項演算子で参照を使用することはできません。PHPマニュアルによると:

注: 三項演算子はステートメントであり、変数に評価されるのではなく、ステートメントの結果に評価されることに注意してください。参照によって変数を返したい場合は、これを知っておくことが重要です。

したがって、参照なしで使用するか、長い形式を使用する必要があります。

if (empty($root)) {
    $root = &$this->_item;
} else {
    $root = &$parent;
}
于 2013-07-27T09:09:08.840 に答える
-1

のようにしてみてください

$root=(empty($root)) ? &$this->_item : &$parent;

または好き

$root=(empty($root) == 'true') ? &$this->_item : &$parent;

ポール・ディクソンが言ったように、参照は必要ありません。したがって、次のように直接試すことができます

$root=(empty($root)) ? $this->_item : $parent;
于 2013-07-27T08:52:06.140 に答える