首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP处理不确定的输入数据

PHP处理不确定的输入数据
EN

Stack Overflow用户
提问于 2016-06-04 01:10:35
回答 1查看 36关注 0票数 0

有时我们收到不同结构的输入数据,例如来自在线API的响应可能包括一些信息,但其他不包括,一些细节存储在复杂的嵌套数组中等。我喜欢在使用之前解析这些数据,这样我就不必一遍又一遍地使用isset(),例如:

代码语言:javascript
复制
$input; // source
$correct_data = arra(); // verified data
$correct_data["option-1"] = (isset($input["option-1"]) ? $input["option-1"] : "");
$correct_data["option-2"] = (isset($input["option-2"]) ? $input["option-2"] : "");

现在我可以使用:

代码语言:javascript
复制
my_function($correct_data["option-1"]);
my_function2($correct_data["option-2"]);

我知道对于未初始化的变量或未知的数组键不会有任何警告。但是嵌套数据会出现问题,例如

代码语言:javascript
复制
$input = array(
    "settings-main" => array(
        "option-1" => "val-1",
        "option-2" => "val-2",
        "sub-settings" => array(
            "my-option" => "some val",
            "my-option-2" => "some val2",
        ),
    ),
    "other-settings" => array(
        "other" => array(
            "option-1" => "a",
            "option-2" => "b",
        ),
    ),
);

很难在start上检查它,稍后我必须使用下面这样的东西:

代码语言:javascript
复制
if(isset($input["settings-main"]))
{
    if(isset($input["settings-main"]["option-1"]))
        $input["settings-main"]["option-1"]; //do something
    if(isset($input["settings-main"]["sub-settings"]))
    {
        if(isset($input["settings-main"]["sub-settings"]["my-option-2"]))
            $input["settings-main"]["sub-settings"]["my-option-2"]; //do something
    }
}

你有什么建议在不使用多个isset()指令的情况下处理这种情况吗?

EN

回答 1

Stack Overflow用户

发布于 2016-06-04 01:19:20

尝试使用递归函数调用。

代码语言:javascript
复制
function recursive_arr($input){
    foreach($input as $val){
        if(is_array($val)){
            recursive_arr($val);
        }else{
            echo $val."<br/>";
        }
    }
}

recursive_arr($input);

Working Example

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37620031

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档