هل يوجد أقصر إذا كان بيان في PHP؟
-
22-09-2019 - |
سؤال
هل من الممكن إعادة كتابة هذا ليكون أقصر بطريقة أو بأخرى؟
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
خلاف ذلك.
لذلك باختصار: إذا isset($_POST['pic_action'])
صحيح، $pic_action
سوف تحمل قيمة $_POST['pic_action']
و 0
خلاف ذلك.
نصائح أخرى
ربما تكون إجابة Gumbo هي أفضل طريقة.
يمكن أيضًا كتابتها على النحو التالي:
$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;