【发布时间】:2011-04-11 21:05:09
【问题描述】:
我有一些用于对数据进行排序的逻辑,但根据用户输入,数据的分组方式不同。现在我有五个不同的函数,它们包含相同的逻辑但不同的分组。有没有办法组合这些函数并动态设置一个可以正确分组的值。在函数中,这些分配正在发生
例如,有时我只是通过以下方式存储计算:
$calcs[$meter['UnitType']['name']] = ...
但其他时候需要更具体的分组:
$calcs[$meter['Resource']['name']][$meter['UnitType']['name']][date('Y-m',$start)] =...
如您所见,有时它存储在多维数组中,有时则不存储。我一直在尝试使用 eval() 但没有成功(不确定这是正确的方法)。将数据存储在临时变量中并不能真正节省太多,因为有许多嵌套循环和 if 语句,因此必须在多个位置重复该数组。
编辑
我希望下面的例子能更好地解释我的问题。这显然是一个愚蠢的版本:
if(){
$calcs[$meter['UnitType']['name']] = $data;
} else {
while () {
$calcs[$meter['UnitType']['name']] = $data;
}
}
现在可以使用相同的逻辑,但将其存储在不同的键中:
if(){
$calcs[$meter['Resource']['name']][$meter['UnitType']['name']][date('Y-m',$start)] = $data;
} else {
while () {
$calcs[$meter['Resource']['name']][$meter['UnitType']['name']][date('Y-m',$start)] = $data;
}
}
有没有办法抽象出 $calc[] 数组中的键,这样我就可以拥有一个函数,而不是拥有多个具有不同数组键的函数?
【问题讨论】:
-
使用对象可以更好地管理吗?
-
我真的不明白这个问题。您是否尝试以统一的方式查询这些数据结构?
-
我进行了编辑以帮助解释。希望它确实有所帮助。
-
你能提供一些示例数据吗?您是在尝试确定键的名称是 UnitType 还是 Resource,还是 UnitType 和 Resource 实际上将动态内容存储在键中?
-
@Kramer,为用户输入的值添加占位符。使您的数组统一。
标签: php arrays multidimensional-array eval