好的,所以我有一个总能产生多维数组的方法。如此改变该方法的输出是不错的编程习惯:
//$arr is a multi dimensional array that can sometimes contain a single array with a single object
//Or sometimes return multiple arrays in the parent array, and even sometimes return an array of an array with multiple objects.
if(sizeof($arr)==1){
//doesnt need to be 2D reduce to 1D
$arr = reset($arr);
if(sizeof($arr)==1){
//1D isnt necassary as its a single object reduce!!
$arr = reset($arr);
}else{
//return is a one dimensional array
}
}else{
//2D has multiple arrays inside lets check if thos arrays can be reduced to single objects
foreach ($arr as $key => $value)
{
if(sizeof($value)==1){
//array is single object reduce so parent array becomes a mixed single object and arrays
$arr[$key] = reset($arr[$key]);
}else{
//is array
}
}
}
如果没有这样的练习是他们完成这项任务的更好方法吗?
这是一个类的方法。我的主要问题是如果这样做是可以接受的。次要的是,如果这是他们更好的方式。
答案 0 :(得分:1)
不知道你的设计很难分辨;但总的来说,我建议不要这样做。保持返回的数据结构一致将使得处理结果变得更加容易,因为您将能够使用相同的逻辑遍历返回的结果。
答案 1 :(得分:1)
问题不是你希望这个功能做什么,而是你打算稍后用数据做什么。根据我的经验,拥有一致的结构(二维数组)是更多比具有不同深度的阵列更方便。如果您的二维数组只有一行,那么问题是什么?您的顶级循环将运行一次并返回。如果你有不同的数组形状,你的代码的其余部分将需要检测和处理所有这些。
实际上我有时会编写相反的代码:如果函数可以接受单个字符串或字符串列表,我会立即将单个字符串转换为长度为1的列表。然后剩下的代码只有一个案例要处理。