Frage

Ist es möglich, dies neu zu schreiben, um irgendwie kürzer zu sein?

if (isset($_POST['pic_action'])){
  $pic_action=$_POST['pic_action'];
}
else { 
  $pic_action=0;
}

Ich habe es irgendwo gesehen, aber vergessen ...:/

Übrigens, bitte erklären Sie Ihren Code auch, wenn Sie möchten!

Vielen Dank

War es hilfreich?

Lösung

Sie könnten die verwenden Bedingender Bediener ?::

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

Der Ausdruck des bedingten Operators expr1 ? expr2 : expr3 bewertet den Rückgabewert von expr2 Wenn der bewertete Rückgabewert von expr1 ist Stimmt; Andernfalls bewertet der Ausdruck den bewerteten Rückgabewert von expr3. Also wenn isset($_POST['pic_action']) bewertet Stimmt, Der gesamte Ausdruck bewertet den bewerteten Wert von $_POST['pic_action'] und zum bewerteten Wert von 0 Andernfalls.

Kurz gesagt: wenn isset($_POST['pic_action']) ist wahr, $pic_action wird den Wert von halten $_POST['pic_action'] und 0 Andernfalls.

Andere Tipps

Gumbos Antwort ist wahrscheinlich der beste Weg.

Es kann auch geschrieben werden als:

$pic_action = 0;
if (isset($_POST['pic_action'])){
    $pic_action=$_POST['pic_action'];
}
$pic_action=(isset($_POST['pic_action']))?($_POST['pic_action']):0;
$pic_action = array_get($_POST, 'pic_action', 0);

Die obige Linie erfordert die array_get Funktion unten definiert. Quelle aus Kohana Arr Klasse. Sehr kleine und generische Funktion. Kann in allen Arrays verwendet werden, z. B. $_GET.

/**
 * Retrieve a single key from an array. If the key does not exist in the
 * array, the default value will be returned instead.
 *
 * @param   array   array to extract from
 * @param   string  key name
 * @param   mixed   default value
 * @return  mixed
 */
function array_get(array $array, $key, $default = NULL)
{
    return isset($array[$key]) ? $array[$key] : $default;
}

Länger, aber wiederverwendbar:

$pic_action = QueryPost('pic_action', 0);

function QueryPost($name, $default='', $valid=false) {
    if (!isset($_POST[$name])) return $default;
    if (($valid) and (empty($_POST[$name]))) return $default;
    return $_POST[$name];
}

Oder Sie können die Querypost -Funktion eine Form der Validierung durchführen, während Sie dabei sind.

$pic_action = QueryPost('pic_action', 'int', 0);

function QueryPost($name, $rule, $default='', $valid=false) {
    // this shouldn't be too hard to write
}

Du kannst tun:

$_POST['pic_action'] = isset($_POST['pic_action']) ? $_POST['pic_action'] : 0;
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top