有时我们收到不同结构的输入数据,例如来自在线API的响应可能包括一些信息,但其他不包括,一些细节存储在复杂的嵌套数组中等。我喜欢在使用之前解析这些数据,这样我就不必一遍又一遍地使用isset(),例如:
$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"] : "");现在我可以使用:
my_function($correct_data["option-1"]);
my_function2($correct_data["option-2"]);我知道对于未初始化的变量或未知的数组键不会有任何警告。但是嵌套数据会出现问题,例如
$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上检查它,稍后我必须使用下面这样的东西:
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()指令的情况下处理这种情况吗?
发布于 2016-06-04 01:19:20
尝试使用递归函数调用。
function recursive_arr($input){
foreach($input as $val){
if(is_array($val)){
recursive_arr($val);
}else{
echo $val."<br/>";
}
}
}
recursive_arr($input);https://stackoverflow.com/questions/37620031
复制相似问题