0

これをどうにか短く書き直すことはできますか?

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

どこかで見たことあるのに忘れちゃった(/_;)

ところで、必要に応じてコードも説明してください!

ありがとう

4

6 に答える 6

18

条件演算子?:を使用できます:

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

の評価された戻り値がtrueの場合、条件演算子式expr1 ? expr2 : expr3は の戻り値に評価されます。それ以外の場合、式は の評価された戻り値に評価されます。そのため、 ifがtrueに評価された場合、式全体が評価された値に評価され、それ以外の場合に評価された値になります。expr2expr1expr3isset($_POST['pic_action'])$_POST['pic_action']0

要するに:isset($_POST['pic_action'])が trueの場合、 and$pic_actionの値を保持します。$_POST['pic_action']0

于 2009-12-30T11:31:01.280 に答える
8

ガンボの答えはおそらく最良の方法です。

次のように書くこともできます。

$pic_action = 0;
if (isset($_POST['pic_action'])){
    $pic_action=$_POST['pic_action'];
}
于 2009-12-30T11:55:21.757 に答える
2
$pic_action=(isset($_POST['pic_action']))?($_POST['pic_action']):0;
于 2009-12-30T11:31:15.203 に答える
1
$pic_action = array_get($_POST, 'pic_action', 0);

上記の行には、array_get以下に定義された関数が必要です。コハナのArrクラスからのソース。非常に小さくて一般的な機能。すべての配列で使用できます$_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;
}
于 2009-12-30T12:06:00.073 に答える
0

できるよ:

$_POST['pic_action'] = isset($_POST['pic_action']) ? $_POST['pic_action'] : 0;
于 2009-12-30T11:59:06.820 に答える
0

長くなりますが、再利用可能です:

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

または、作業中に QueryPost 関数に一種の検証を実行させることもできます。

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

function QueryPost($name, $rule, $default='', $valid=false) {
    // this shouldn't be too hard to write
}
于 2009-12-30T11:49:54.723 に答える