質問

これを書き直すことは、どういうわけか短くなることができますか?

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

どこかで見たことがありますが、忘れてしまいました...:/

ところで、あなたが好きならあなたのコードも説明してください!

ありがとう

役に立ちましたか?

解決

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

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

条件付き演算子式 expr1 ? expr2 : expr3 の返品値に評価します expr2 評価された返品値の場合 expr1真実;それ以外の場合は、式は評価された返品値に評価されます expr3. 。だから isset($_POST['pic_action']) に評価します 真実, 、表現全体が評価された値に評価されます $_POST['pic_action'] の評価された値に 0 それ以外は。

要するに:if isset($_POST['pic_action']) 本当です、 $pic_action の価値を保持します $_POST['pic_action']0 それ以外は。

他のヒント

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

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

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

上記の行には必要です 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;
}

長いが再利用可能:

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

できるよ:

$_POST['pic_action'] = isset($_POST['pic_action']) ? $_POST['pic_action'] : 0;
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top