如何在php中动态设置数组键
发布时间:2020-12-13 13:23:21 所属栏目:PHP教程 来源:网络整理
导读:我有一些逻辑用于对数据进行排序,但根据用户输入,数据的分组方式不同.现在我有五个不同的功能,包含相同的逻辑但不同的分组.有没有办法组合这些功能,并动态设置一个将正确分组的值.在功能中,这些任务正在发生 例如,有时我只是通过以下方式存储计算: $calcs[$
我有一些逻辑用于对数据进行排序,但根据用户输入,数据的分组方式不同.现在我有五个不同的功能,包含相同的逻辑但不同的分组.有没有办法组合这些功能,并动态设置一个将正确分组的值.在功能中,这些任务正在发生
例如,有时我只是通过以下方式存储计算: $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(); } 先给它,看看阵列结构是如何出现的. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |