加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

如何在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();
}

先给它,看看阵列结构是如何出现的.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读