Kra*_*mer 9 php arrays eval multidimensional-array
我有一些逻辑用于对数据进行排序,但根据用户输入,数据的分组方式不同.现在我有五个不同的功能,包含相同的逻辑但不同的分组.有没有办法组合这些功能,并动态设置一个正确分组的值.在功能中,这些任务正在发生
例如,有时我只是通过以下方式存储计算:
$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 []数组中的键,以便我可以有一个函数而不是具有不同数组键的多个函数?
执行以下操作不是更容易吗
$calcs = array(
    $meter['Resource']['name'] => array(
        $meter['UnitType']['name'] => 'Some Value',
        $meter['UnitType']['name2'] => 'Some Value Again'
    ),
);
或者你可以使用对象
$calcs = new stdClass();
$calcs->{$meter['UnitType']['name']} = 'Some Value';
但我建议你在数组中构建你的结构,然后这样做!
$calcs = (object)$calcs_array;
或者您可以将第一个数组循环到一个新数组中!
$new = array();
$d = date('Y-m',$start);
foreach($meter as $key => $value)
{
    $new[$key]['name'][$d] = array();
}
给过去看看数组结构如何出来。