PHP处理不确定的输入数据

Sometimes we receive input data of varying structure, for example response from online API may include some information but other not, some details are stored in complex nested arrays etc. I like to parse this data before usage, this way I don't have to use isset() over and over later on, ex.:

$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"] : "");

Now I can use:

my_function($correct_data["option-1"]);
my_function2($correct_data["option-2"]);

and I know that there won't be any warnings for uninitialized variables or unknown array keys. But problem occurs for nested data e.g.

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

It's difficult to check this on start, later I have to use something like this:

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

do you have any suggestions how to handle such situations without using multiple isset() instructions ?

Try this with recursive function call.

function recursive_arr($input){
    foreach($input as $val){
        if(is_array($val)){
            recursive_arr($val);
        }else{
            echo $val."<br/>";
        }
    }
}

recursive_arr($input);

Working Example