Using Nested Ternary Operators

I am trying to use isset()in a nested form as shown below:

isset($_POST['selectedTemplate'])?$_POST['selectedTemplate']:isset($_GET['selectedTemplate'])?$_GET['selectedTemplate']:0

But it seems like I'm missing something. Can someone help me how to do this?

+13
source share
7 answers

Wrap it in parentheses:

$selectedTemplate = isset($_POST['selectedTemplate'])
                  ? $_POST['selectedTemplate']
                  : (
                       isset($_GET['selectedTemplate'])
                       ? $_GET['selectedTemplate']
                       : 0
                  );

Or even better, use the correct instruction if/ else(for convenience):

$selectTemplate = 0;

if (isset($_POST['selectedTemplate'])) {
    $selectTemplate = $_POST['selectedTemplate'];
} elseif (isset($_GET['selectedTemplate'])) {
    $selectTemplate = $_GET['selectedTemplate'];
}

However, as others have pointed out, it will be easier for you to use $_REQUEST:

$selectedTemplate = isset($_REQUEST['selectedTemplate'])
                  ? $_REQUEST['selectedTemplate']
                  : 0;
+31
source

It may be easier for you to simply use the $ _REQUEST variables:

"$ _ REQUEST is an associative array that by default contains the contents of $ _GET, $ _POST and $ _COOKIE."

http://us2.php.net/manual/en/reserved.variables.request.php

+1

, :

$myvar = ($x == $y)
  ?(($x == $z)?'both':'foo')
  :(($x == $z)?'bar':'none');

- , if. .:)

+1

, , :)

:

<?php

$test = array();
$test['a'] = "value";


var_dump(
    isset($test['a'])
        ? $test['a']
        : isset($test['b'])
            ? $test['b']
            : "default"
);

, .

, , :

var_dump(
    isset($test['a'])
        ? $test['a']
        : (isset($test['b'])  // <--  here
            ? $test['b']
            : "default")      // <--  and here
);

! :

var_dump(
    (isset($test['a'])        // <--  here
        ? $test['a']
        : isset($test['b']))  // <--  and here
            ? $test['b']
            : "default"
);

, : Undefined index.

-.

+1

$_REQUEST fiddly $_GET $_POST :

 isset($_REQUEST['selectedTemplate']) ? $_REQUEST['selectedTemplate'] : 0

, .

0

php 7 Null-

$selectedTemplate = $_POST['selectedTemplate']) ?? $_GET['selectedTemplate'] ?? 0;
0

, :

$test = array();
$test['a'] = 123;
$test['b'] = NULL;


$var = (isset($test['a']) ? $test['a'] : (!isnull($test['b']) ? $test['b'] : "default"));

echo $var;
0

All Articles