【问题标题】:Optional Parameters -- POST Request in php可选参数——php中的POST请求
【发布时间】:2014-06-23 15:01:13
【问题描述】:

我正在为我的客户开发一个客户端-服务器应用程序。我被要求向数据库添加更多列。我更新了 php 端点来处理这个问题。我遇到的问题是并非所有客户端应用程序都会立即更新,那么如何使附加参数成为可选参数?我对php很陌生,所以如果我没有马上理解,我很抱歉。

编辑:问题是数据甚至可能不包含三个可选成员。所以我需要检查该数据是否具有成员 devicemake、devicemodel 或 networktype。

示例代码:

switch(strtolower($_SERVER['REQUEST_METHOD']))
{
    case 'get':
        echo"this is a get request";
        $data = $_GET;
        print_r($data);
        $problem = $data['problem'];
        $environment = $data['environment'];
        $latitude = $data['latitude'];
        $longitude = $data['longitude'];
        $devicemake = ($data['devicemake'] ? $data['devicemake'] : null); // optional
        $devicemodel = ($data['devicemodel'] ? $data['devicemodel'] : null);  //optional
        $networktype = ($data['networktype'] ? $data['networktype'] : null); // optional
        $additionalinfo = $data['additionalinfo'];

        break;
    case 'post':
        echo "this is a post request";
        print_r($HTTP_POST_VARS);
        $postvars = $HTTP_POST_VARS;
        $data = json_decode($postvars);

        $problem = $data->problem;
        $environment = $data->environment;
        $latitude = $data->latitude;
        $longitude = $data->longitude;
        $devicemake = ($data->devicemake ? $data->devicemake : null);  //optional
        $devicemodel = ($data->devicemodel ? $data->devicemodel : null);  //optional
        $networktype = ($data->networktype ? $data->networktype : null);  //optional
        $additionalinfo = $data->additionalinfo;

        break;
}

【问题讨论】:

  • 你应该使用isset($data['devicemake'])进行测试。

标签: php optional-parameters


【解决方案1】:
$additionalinfo = isset($data['additionalinfo']) ? $data['additionalinfo'] : "not set";

上面所做的基本上是在isset();上运行'if'语句

isset() 完全按照它所说的去做 - 如果括号中的项目“已设置”或“已初始化”,则返回 true / false

"not set" 是您想要执行的任何操作(如果未设置)(if 语句的 else{} 部分)

edit 刚刚看到可选位抱歉 -

    $devicemake = isset($data->devicemake) ? $data->devicemake : null;  //optional
    $devicemodel = isset($data->devicemodel) ? $data->devicemodel : null;  //optional
    $networktype = isset($data->networktype) ? $data->networktype : null; 

我将把其余的解释留在编辑上方,因为我没有看到那一点,它可能对其他人有用。

【讨论】:

    猜你喜欢
    • 2013-01-05
    • 1970-01-01
    • 2020-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-19
    • 2016-11-27
    • 2021-03-11
    相关资源
    最近更新 更多