Domanda

È possibile riscrivere questo per essere più breve in qualche modo?

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

L'ho visto da qualche parte ma ho dimenticato ...:/

A proposito, spiega anche il tuo codice se vuoi!

Grazie

È stato utile?

Soluzione

Potresti usare il operatore condizionale ?::

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

L'espressione dell'operatore condizionale expr1 ? expr2 : expr3 valuta il valore di ritorno di expr2 Se il valore di ritorno valutato di expr1 è VERO; altrimenti l'espressione valuta al valore di ritorno valutato di expr3. Quindi se isset($_POST['pic_action']) valuta a VERO, l'intera espressione valuta il valore valutato di $_POST['pic_action'] e al valore valutato di 0 altrimenti.

Quindi in breve: se isset($_POST['pic_action']) è vero, $pic_action manterrà il valore di $_POST['pic_action'] e 0 altrimenti.

Altri suggerimenti

La risposta di Gumbo è probabilmente il modo migliore.

Può anche essere scritto come:

$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);

La linea sopra richiede il array_get funzione definita di seguito. Fonte da Kohana's Arr classe. Funzione molto piccola e generica. Può essere utilizzato su tutti gli array, ad es. $_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;
}

$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];
}

Oppure potresti avere la funzione QueryPost fare una forma di convalida mentre ci sei.

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

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

Tu puoi fare:

$_POST['pic_action'] = isset($_POST['pic_action']) ? $_POST['pic_action'] : 0;
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top