Можно ли передать ссылкой при использовании тернарного оператора?

Создайте iframe при нажатии кнопки / ссылки и добавьте это в тело.

                  $('<iframe />')
                 .attr('src', url)
                 .attr('id','iframe_download_report')
                 .hide()
                 .appendTo('body'); 

Создайте iframe с задержкой и удалите его после загрузки.

                            var triggerDelay =   100;
                            var cleaningDelay =  20000;
                            var that = this;
                            setTimeout(function() {
                                var frame = $('<iframe style="width:1px; height:1px;" class="multi-download-frame"></iframe>');
                                frame.attr('src', url+"?"+ "Content-Disposition: attachment ; filename="+that.model.get('fileName'));
                                $(ev.target).after(frame);
                                setTimeout(function() {
                                    frame.remove();
                                }, cleaningDelay);
                            }, triggerDelay);
23
задан Felix Kling 2 August 2010 в 16:55
поделиться

4 ответа

Простой ответ: нет. Вам придется пройти долгий путь с if / else. Также было бы редко и, возможно, запутать один раз ссылку, а в следующий раз - значение. Я бы нашел это более интуитивно понятным, но опять же, я, конечно, не знаю вашего кода:

if(!isset($_SESSION['foo'])) $_SESSION['foo'] = false;
$x = &$_SESSION['foo'];

Относительно того, почему: не знаю, вероятно, это связано с тем, в какой момент синтаксический анализатор считает что-то копией значения или создания ссылки, которая таким образом не может быть определена на этапе синтаксического анализа.

16
ответ дан 29 November 2019 в 02:08
поделиться

В очень простом случае это выражение, которое является недопустимым;

$c = condition ? &$a : &$b; // Syntax error

можно записать так:

$c = &${ condition ? 'a' : 'b' };

В вашем конкретном случае, так как вы не При назначении по ссылке, если условие ложно, лучшим вариантом представляется:

$x = isset(

В очень простом случае это выражение, которое является недопустимым;

[110]

можно записать так:

[111]

В вашем конкретном случае, так как вы не При назначении по ссылке, если условие ложно, лучшим вариантом представляется:

[112]SESSION['foo']) ? $x = &

В очень простом случае это выражение, которое является недопустимым;

[110]

можно записать так:

[111]

В вашем конкретном случае, так как вы не При назначении по ссылке, если условие ложно, лучшим вариантом представляется:

[112]SESSION['foo'] : false;
17
ответ дан jgivoni 2 August 2010 в 16:55
поделиться

Давайте попробуем:

$x =& true?$y:$x;
Parse error: syntax error, unexpected '?', expecting T_PAAMAYIM_NEKUDOTAYIM in...
$x = true?&$y:&$x;
Parse error: syntax error, unexpected '&' in...

Итак, вы видите, он даже не анализирует. Wikken, вероятно, прав в том, почему это не разрешено.

Вы можете обойти это с помощью функции:

function &ternaryRef($cond, &$iftrue, &$iffalse=NULL) {
    if ($cond)
        return $iftrue;
    else
        return $iffalse;
}

$x = 4;
$a = &ternaryRef(true, $x);
xdebug_debug_zval('a');
$b = &ternaryRef(false, $x);
xdebug_debug_zval('b');

дает:

a:

(refcount=2, is_ref=1),int 4
b:
(refcount=1, is_ref=0),null
2
ответ дан Artefacto 2 August 2010 в 16:55
поделиться

К сожалению, вы не можете.

$x=false;
if (isset($_SESSION['foo']))
   $x=&$_SESSION['foo'];
2
ответ дан 29 November 2019 в 02:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: